private static void ExceportExcelDemo() throws Exception {
//1.首先是读取提前放置好的Excel模板(已存在)
String tempPath="D:\\1\\TemplateExcel.xls";
File tempFile = new File(tempPath);
//2.创建一个存放导出的模板的路径(还未存在的)
String newPath="D:\\1\\export\\exportdemo.xls";
File newfile = new File(newPath);
if(!newfile.exists()){
newfile.mkdir();
}
//复制文件,复制一份模板到输出的路径上
org.apache.commons.io.FileUtils.copyFile(tempFile,newfile);
String fileType=newPath.substring(newPath.indexOf(".")+1);
//读取复制过来的模板,给Excel插入数据
InputStream fileInputStream = new FileInputStream(newfile);
Workbook workbook = null;
//根据Excel的后缀需要选取不同的Workbook
if (fileType.toLowerCase().equals("xls")) {
workbook = new HSSFWorkbook(fileInputStream);
} else if (fileType.toLowerCase().equals("xlsx")) {
workbook = WorkbookFactory.create(fileInputStream);
}
if(workbook!=null){
//默认就读取第一个Sheet页了
Sheet sheetAt = workbook.getSheetAt(0);
//获取结束列
int endCol=4;
//起始行根据实际模板定义,这里假设需要输入10条数据
for(int startRow=1;startRow<11;startRow++){
//获取每一行
Row row = sheetAt.createRow(startRow);
//起始列从0开始
for(int startCol=0;startCol<endCol;startCol++){
Cell cell = row.createCell(startCol);
cell.setCellValue("张三");
}
}
//利用文件流再讲数据写回文件中取
FileOutputStream fileOutputStream = new FileOutputStream(newfile);
workbook.write(fileOutputStream);
fileOutputStream.close();
}
}
public static void main(String[] args){
try {
ExceportExcelDemo();
} catch (Exception e) {
e.printStackTrace();
}
}
提前准备好的模板
导出的模板
这里只做最简单的解析积累,具体需要根据实际业务解析复杂一点的Excel模板,但是基本代码都是一样的。