当前位置:网站首页>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完成。");
}边栏推荐
- Online yaml to CSV tool
- leetcode刷题 (5.28) 哈希表
- 【ROS】usb_cam相机标定
- Cisp-pte practice explanation
- sublime text的编写程序时的Tab和空格缩进问题
- Restful API design specification
- Hungry for 4 years + Ali for 2 years: some conclusions and Thoughts on the road of research and development
- Image,cv2读取图片的numpy数组的转换和尺寸resize变化
- Remote storage access authorization
- Research Report on Market Research and investment strategy of microcrystalline graphite materials in China (2022 Edition)
猜你喜欢
![[MySQL] database stored procedure and storage function clearance tutorial (full version)](/img/27/e775e03b77c7195216bc50c5cbefb4.png)
[MySQL] database stored procedure and storage function clearance tutorial (full version)

Ruffian Heng embedded bimonthly, issue 49

Analysis of the source code of cocos2d-x for mobile game security (mobile game reverse and protection)

C语言双指针——经典题型

704 二分查找

【ROS】usb_cam相机标定

Online yaml to CSV tool

Online yaml to CSV tool

The resources of underground pipe holes are tight, and the air blowing micro cable is not fragrant?

Wincc7.5 download and installation tutorial (win10 system)
随机推荐
C语言双指针——经典题型
2022 Inner Mongolia latest water conservancy and hydropower construction safety officer simulation examination questions and answers
深度剖析C语言指针
[secretly kill little partner pytorch20 days -day01- example of structured data modeling process]
Upgrade tidb operator
LDAP應用篇(4)Jenkins接入
hutool优雅解析URL链接并获取参数
【MySQL】锁
JS native implementation shuttle box
游戏解包的危害及资源加密的重要性
Synchronized solves problems caused by sharing
Double pointeur en langage C - - modèle classique
同一局域网的手机和电脑相互访问,IIS设置
egg. JS getting started navigation: installation, use and learning
Beijing invitation media
sublime text中conda环境中plt.show无法弹出显示图片的问题
vulnhub hackme: 1
被破解毁掉的国产游戏之光
[cloud native] teach you how to build ferry open source work order system
[brush questions] top101 must be brushed in the interview of niuke.com