我是靠谱客的博主 传统路人,最近开发中收集的这篇文章主要介绍java poi 修改excel保留excel格式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

/**
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();
	}

需要注意的几点:

  1. 上面使用HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现 ,excel文件格式xls;对Excel 2007 OOXML (.xlsx)文件操作使用XSSF。
  2. sheet.getRow(rowNum);是获取excel的第rowNum-1行,如果该行为空,可以创建一个新行 sheet.createRow(rowNum)。但是,createRow会将行中原有的数据都清空,创建一个新行,如果excel中默认单元格中有数据,则会清空。
  3. 如果单元格中没有值,sheet.getRow(rowNum).getCell(columnNum)会得到null。
  4. sheet.setForceFormulaRecalculation(true);//强制执行excel中函数,模板中有函数时,需要设置

最后

以上就是传统路人为你收集整理的java poi 修改excel保留excel格式的全部内容,希望文章能够帮你解决java poi 修改excel保留excel格式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部