package excel;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* @Auther: lyf
* @Date: 2019-08-13 12:51
* @Description: 用到的jar包是这个
* <dependency>
* <groupId>org.apache.poi</groupId>
* <artifactId>poi</artifactId>
* <version>4.0.0</version>
* </dependency>
* HSSFWorkbook同时支持'xlsx'和'xls'这两种文件格式
* 这里的演示比较简单,只是告诉自己有这回事,以后需要更加复杂的功能可以自己去看看源码
* 或者再看看其他人的博客
*/
public class ExcelTest {
//生成一个'xlsx'后缀的文件
@Test
public void test1() {
try {
//创建一个workbook对象,可以理解为是一个excel文件
Workbook workbook = new HSSFWorkbook();
//创建sheet,就是excel文件中的工作表
Sheet sheet = workbook.createSheet("sheet1");
//创建行,是从第0行开始的
Row head = sheet.createRow(0);
//创建单元格,每一行的数据,第一个单元格的角标也是0
head.createCell(0).setCellValue("姓名");
head.createCell(1).setCellValue("年龄");
head.createCell(2).setCellValue("手机号码");
for (int i = 1; i <= 100; i++) {
Row row = sheet.createRow(i);
row.createCell(0).setCellValue("abc");
row.createCell(1).setCellValue(i);
//有一个应用场景忘记了,如果字符串得不到你想要的显示效果的话
//可以试试加上'\t'制表位,估计就能得出正确的结果了
row.createCell(2).setCellValue("19362635829");
}
workbook.write(new FileOutputStream(new File("G://用户信息数据.xls")));
} catch (Exception e) {
e.printStackTrace();
}
}
//读取excel文件
@Test
public void test2() {
try {
Workbook workbook = new HSSFWorkbook(new FileInputStream(new File("G://用户信息数据.xls")));
//获取到第一个工作表
Sheet sheet = workbook.getSheetAt(0);
if (sheet == null) {
return;
}
//获取到表格的行数,如果一行数据都没有,那么取值为0,一行数据就是1
int rows = sheet.getLastRowNum();
if (rows > 0) {
//获取第一行数据
Row head = sheet.getRow(0);
System.out.println(head.getCell(0).getStringCellValue() + "\t" + head.getCell(1).getStringCellValue() + "\t" + head.getCell(2).getStringCellValue());
for (int i = 1; i < rows; i++) {
Row row = sheet.getRow(i);
//获取单元格中的数据
//获取字符串使用getStringCellValue()方法
//获取数字使用getNumericCellValue方法,然后再转成自己需要的数字格式
System.out.println(row.getCell(0).getStringCellValue() + "\t" + ((int) row.getCell(1).getNumericCellValue()) + "\t" + row.getCell(2).getStringCellValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}