java 合并汇总多个excel数据到单个excel中

为了高效地合并大量员工的19张不同统计指标的Excel表格,开发了一个Java程序,解决了手动合并的低效问题。程序利用jxl库避免了因文件过大导致的内存溢出,但目前仅适用于表头行数固定的Excel,未来建议优化为B/S架构以提高灵活性和可配置性。
摘要由CSDN通过智能技术生成

需求:家人工作需要统计公司全体员工个人信息及各个资料,每个统计指标一个excel,每个人19张excel,最终要把所有员工的各个统计指标分别都合并到单独的excel中,即最终汇总到19张excel中。由于员工基数大,单独靠一个人合并起来就很费时费力,工作量十分庞大,且是枯燥的重复苦力活,故开发此程序,减少工作量,提升工作效率。

设计:本程序是一次输出为excel,所以当文件过大,就会有内存溢出,而导致合拼失败,开始使用poi读取,但是报一个block[0] removed的异常,查阅官方文档,说是excel07以下的版本和07版本格式不一样所致,结果使用了jxl。

优化建议:本程序纯属后端Java程序,灵活性不高,只适合表头行数固定的excel,后续优化建议做成B/S架构模型,可配置化(源路径、目标路径、表头行数等等),增加程序灵活性。


package myTest;



import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Locale;


import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;


public class JXLMergerWriteExcel {
private WritableCellFormat times;
private String createFilePath;// 合成文件存放路径
private int beginMergerColumnIndex = 0;// 开始合并的列
private int endMerGerColumnIndex;// 结束的合并的列
// private long headRowIndex;//列头所在位置
private int beginMergerRow = 1;// 开始合并的行标(例如第一行是表头第二行开始是数据,则此时从第二行有数据的开始合并即为1,也意味着表头就一行)
private int pageCount = 0;
//private List<String> columns = null;
private String[][] headColumns = null;
private String dirPath;
private int mergerRowBeginIndex = 0;


public JXLMergerWriteExcel(String createFilePath, String path) {
this.createFilePath = createFilePath;
this.dirPath = path;
}


public JXLMergerWriteExcel(String createFilePath, String path, int beginMergerRow) {
this.createFilePath = createFilePath;
this.dirPath = path;
this.beginMergerRow = beginMergerRow;
}

public JXLMergerWriteExcel(String createFilePath, String path, int beginMergerColumnIndex, int endMerGerColumnIndex,
int beginMergerRow) {
this.createFilePath = createFilePath;
this.dirPath = path;
this.beginMergerColumnIndex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值