当前位置:网站首页>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完成。");
}
边栏推荐
- Migrate data from SQL files to tidb
- Research Report on supply and demand and development prospects of China's high purity aluminum market (2022 Edition)
- Sort according to a number in a string in a column of CSV file
- Char to leading 0
- Modify the video name from the name mapping relationship in the table
- Golang force buckle leetcode 1020 Number of enclaves
- 【MySQL】锁
- 从表中名称映射关系修改视频名称
- Cisp-pte practice explanation
- [secretly kill little partner pytorch20 days -day01- example of structured data modeling process]
猜你喜欢
Cisp-pte practice explanation
JS native implementation shuttle box
Analysis of the source code of cocos2d-x for mobile game security (mobile game reverse and protection)
查看局域网中电脑设备
Fibonacci sequence
Use Alibaba icon in uniapp
软件卸载时遇到trying to use is on a network resource that is unavailable
3. File operation 3-with
JVM performance tuning and practical basic theory - Part 1
Zhong Xuegao, who cannot be melted, cannot escape the life cycle of online celebrity products
随机推荐
Verrouillage [MySQL]
Browser thread
【MySQL】鎖
Fibonacci sequence
Upgrade tidb operator
Beijing invitation media
tree树的精准查询
电脑清理,删除的系统文件
visdom可视化实现与检查介绍
Restore backup data on S3 compatible storage with tidb lightning
Golang force buckle leetcode 1020 Number of enclaves
Zhong Xuegao, who cannot be melted, cannot escape the life cycle of online celebrity products
Sort according to a number in a string in a column of CSV file
[luatos-air551g] 6.2 repair: restart caused by line drawing
sys. argv
个人电脑好用必备软件(使用过)
logback1.3. X configuration details and Practice
根据csv文件某一列字符串中某个数字排序
Image fusion -- challenges, opportunities and Countermeasures
Tidb backup and recovery introduction