概述
/**
outFilePath:输出文件路径
inFilePath:输入文件路径
rows:输入数据
*/
public static void writeExcel(String outFilePath,String inFilePath,List<Map<String, Object>> rows) throws Exception {
if (rows == null) {
return;
}
InputStream in = new FileInputStream(inFilePath);
HSSFWorkbook wb = new HSSFWorkbook(in);
HSSFSheet sheet = wb.getSheetAt(0);
in.close();
int rowNum = 1;//模板第一行是固定标题,从第二行开始插入数据
sheet.setForceFormulaRecalculation(true);//强制执行excel中函数
// 创建一个单元格,设置其内的数据格式为字符串,并填充内容,其余单元格类同
for (Map<String, Object> row : rows) {
// 获取并设置该行每一单元格的信息,该行单元格的索引从 0 开始
int cellIndex = 1;//从第二个单元格设置值,因为第一个单元格是序号函数row()-1
HSSFRow newRow = sheet.getRow(rowNum);
if(newRow==null){
newRow = sheet.createRow(rowNum);
}
HSSFCell c2 = newRow.createCell(cellIndex++, Cell.CELL_TYPE_STRING);
c2.setCellValue(row.get("appNumber")!=null?(String)row.get("appNumber"):null);
HSSFCell c3 = newRow.createCell(cellIndex++, Cell.CELL_TYPE_NUMERIC);
c3.setCellValue(row.get("receiptTitle")!=null?(String)row.get("receiptTitle"):null);
rowNum++;
}
FileOutputStream excelFileOutPutStream = new FileOutputStream(outFilePath);
// 将最新的 Excel 文件写入到文件输出流中,更新文件信息!
wb.write(excelFileOutPutStream);
// 执行 flush 操作, 将缓存区内的信息更新到文件上
excelFileOutPutStream.flush();
// 使用后,及时关闭这个输出流对象, 好习惯,再强调一遍!
excelFileOutPutStream.close();
}
需要注意的几点:
- 上面使用HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现 ,excel文件格式xls;对Excel 2007 OOXML (.xlsx)文件操作使用XSSF。
- sheet.getRow(rowNum);是获取excel的第rowNum-1行,如果该行为空,可以创建一个新行 sheet.createRow(rowNum)。但是,createRow会将行中原有的数据都清空,创建一个新行,如果excel中默认单元格中有数据,则会清空。
- 如果单元格中没有值,sheet.getRow(rowNum).getCell(columnNum)会得到null。
- sheet.setForceFormulaRecalculation(true);//强制执行excel中函数,模板中有函数时,需要设置
最后
以上就是传统路人为你收集整理的java poi 修改excel保留excel格式的全部内容,希望文章能够帮你解决java poi 修改excel保留excel格式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复