当前位置:网站首页>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完成。");
}
边栏推荐
- Analysis of the source code of cocos2d-x for mobile game security (mobile game reverse and protection)
- Image,cv2读取图片的numpy数组的转换和尺寸resize变化
- 704 二分查找
- 【ROS】usb_cam相机标定
- MySQL learning record 07 index (simple understanding)
- Golang force buckle leetcode 1020 Number of enclaves
- 2. File operation - write
- leetcode刷题 (5.29) 哈希表
- leetcode刷题 (5.31) 字符串
- China dihydrolaurenol market forecast and investment strategy report (2022 Edition)
猜你喜欢
JVM 快速入门
ROS编译 调用第三方动态库(xxx.so)
Unified ordering background interface product description Chinese garbled
深度剖析C语言指针
Synchronized solves problems caused by sharing
2022 Inner Mongolia latest water conservancy and hydropower construction safety officer simulation examination questions and answers
Chrome浏览器的crash问题
指针进阶---指针数组,数组指针
C language - bit segment
[MySQL] lock
随机推荐
Research Report on Market Research and investment strategy of microcrystalline graphite materials in China (2022 Edition)
JS pure function
Upgrade tidb with tiup
软件卸载时遇到trying to use is on a network resource that is unavailable
3. File operation 3-with
C語言雙指針——經典題型
2022.02.13 - 238. Maximum number of "balloons"
Yyds dry goods inventory three JS source code interpretation eventdispatcher
[brush questions] top101 must be brushed in the interview of niuke.com
C language - bit segment
MySQL learning record 10getting started with JDBC
Analysis of pointer and array written test questions
FairGuard游戏加固:游戏出海热潮下,游戏安全面临新挑战
Deep learning: derivation of shallow neural networks and deep neural networks
JVM performance tuning and practical basic theory - Part 1
【MySQL】数据库的存储过程与存储函数通关教程(完整版)
【MySQL】日志
深度剖析C语言指针
同一局域网的手机和电脑相互访问,IIS设置
Grayscale upgrade tidb operator