当前位置:网站首页>poi追加写EXCEL文件
poi追加写EXCEL文件
2022-07-06 08:31:00 【renkai721】
需求场景描述:
我们有时候需要把用户上传的一个完整的EXCEL拆分为多个不同的EXCEL,然后发给不同部门的人处理完之后,再把这些EXCEL合并到一个EXCEL文件中。
下面的这个文章地址是EXCEL2003的处理,如果是2007版本以上的需要自己手动修改HSSF为XSSF就可以了。
下面是poi处理的代码片段
1、pom文件中增加poi依赖
<!-- poi start -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-excelant</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
2、追加写EXCEL的核心代码。
public void appendExcel(String saveOrderLocalPath, int beginRow, List<SubmitYhdDecomposeExcel> list) throws IOException {
FileOutputStream out = null;
log.info("saveOrderLocalPath={},beginRow={}",saveOrderLocalPath,beginRow);
FileInputStream fileInputStream = new FileInputStream(saveOrderLocalPath);
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFCellStyle cellStyle = workbook.createCellStyle();
// -----------------追加数据-------------------
if(beginRow > 1){
// 从哪一行开始写,注意这里传递过来的beginRow是EXCEL真实的第几行,行数
// 代码中需要判断大于1行的时候需要下标减1,程序写入是从0开始的。
// 由于有表头,所以beginRow=1的时候这里不减1
beginRow -= 1;
}
for (int i = 0; i < list.size(); i++) {
SubmitYhdDecomposeExcel rowObj = list.get(i);
XSSFRow startRow = sheet.createRow(i + beginRow);
for (int col = 0; col < 18; col++) {
XSSFCell cell = startRow.createCell(col);
switch (col) {
case 0:
cell.setCellValue(rowObj.getCus_no());
break;
case 1:
cell.setCellValue(rowObj.getType());
break;
case 2:
cell.setCellValue(rowObj.getNum());
break;
case 3:
cell.setCellValue(rowObj.getPrice_input());
break;
case 4:
cell.setCellValue(rowObj.getNormal_type());
break;
case 5:
cell.setCellValue(rowObj.getBak());
break;
case 6:
cell.setCellValue(rowObj.getUnfit());
break;
case 7:
cell.setCellValue(rowObj.getPack());
break;
case 8:
cell.setCellValue(rowObj.getOne_price());
break;
case 9:
cell.setCellValue(rowObj.getLow_price());
break;
case 10:
cell.setCellValue(rowObj.getDate());
break;
case 11:
cell.setCellValue(rowObj.getCheap_type());
break;
case 12:
cell.setCellValue(rowObj.getCheap_bak());
break;
case 13:
cell.setCellValue(rowObj.getCheap_unfit());
break;
case 14:
cell.setCellValue(rowObj.getCheap_pack());
break;
case 15:
cell.setCellValue(rowObj.getCheap_one_price());
break;
case 16:
cell.setCellValue(rowObj.getCheap_low_price());
break;
case 17:
cell.setCellValue(rowObj.getCheap_date());
break;
default:
break;
}
cell.setCellStyle(cellStyle);
}
}
// 输出Excel文件
out = new FileOutputStream(saveOrderLocalPath);
workbook.write(out);
out.flush();
out.close();
fileInputStream.close();
log.info("追加写入EXCEL完成。");
}
边栏推荐
猜你喜欢
游戏解包的危害及资源加密的重要性
Leetcode question brushing (5.28) hash table
Hungry for 4 years + Ali for 2 years: some conclusions and Thoughts on the road of research and development
[brush questions] top101 must be brushed in the interview of niuke.com
Chrome浏览器的crash问题
深度剖析C语言数据在内存中的存储
Beijing invitation media
2. File operation - write
leetcode刷题 (5.28) 哈希表
JVM performance tuning and practical basic theory - Part 1
随机推荐
leetcode刷题 (5.31) 字符串
sublime text中conda环境中plt.show无法弹出显示图片的问题
2022.02.13 - 238. Maximum number of "balloons"
C language - bit segment
pytorch训练好的模型在加载和保存过程中的问题
IoT -- 解读物联网四层架构
Résumé des diagrammes de description des broches de la série ESP
查看局域网中电脑设备
Unified ordering background interface product description Chinese garbled
Restful API design specification
深度剖析C语言数据在内存中的存储
Personalized online cloud database hybrid optimization system | SIGMOD 2022 selected papers interpretation
China polyether amine Market Forecast and investment strategy report (2022 Edition)
Browser thread
同一局域网的手机和电脑相互访问,IIS设置
gcc动态库fPIC和fpic编译选项差异介绍
All the ArrayList knowledge you want to know is here
Leetcode question brushing (5.31) string
JS inheritance method
Verrouillage [MySQL]