package com.leftso.test
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExportExcelByPOITest {
public static void main(String[] args) {
try {
File file=new File("d:/1.xlsx");
FileOutputStream fos=new FileOutputStream(file);
exportExcel(fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 测试Excel通过模板方式写入
*
* @param outputStream
* @throws Exception
*/
public static void exportExcel(OutputStream outputStream) throws Exception {
// 载入模板文件,也可以通过File的方式载入
InputStream is = Object.class.getResourceAsStream("/com/leftso/test/template.xlsx");//存放模板文件路径
// 通过模板生成Workbook
XSSFWorkbook workbook = new XSSFWorkbook(is);
// 下面进行模板填写
// 获取Excel文件的第一个sheet
Sheet sheet0 = workbook.getSheetAt(0);
// 写入title
Row row0 = sheet0.getRow(0);
Cell row0Cell0 = row0.getCell(0);
row0Cell0.setCellValue("这句话是代码填写的标题");
// 写入标签1的数据
Row row1 = sheet0.getRow(1);
Cell row1Cell;
for (int i = 1; i < 5; i++) {
row1Cell = row1.getCell(i);// 因为第一个cell是标题,数据从第二个cell开始
row1Cell.setCellValue(i + 8);
}
// 写入标签2数据
Row row2 = sheet0.getRow(2);
Cell row2Cell;
for (int i = 1; i < 5; i++) {
row2Cell = row2.getCell(i);// 因为第一个cell是标题,数据从第二个cell开始
row2Cell.setCellValue(i - 9);
}
// 注意,标签3没有填充数据
workbook.write(outputStream);
// 关闭资源
workbook.close();
}
}