声明:文章内容全都是自己的学习总结,如有不对的地方请大家帮忙指出。有需要沟通交流的可加我QQ群:425120333
原先用jxl中的合并多个Sheel表工具类,总是报空指针异常,网上找了资料,解决办法是改工具包中的源码。看看挺麻烦的,就直接去写了一个合并的工具方法。
private final static Log logger = LogFactory.getLog(ExcelUtil.class);
/**
* @introduction: 将多个Excel文件中的sheel合并到一个Excel中(例:Excel1有2个sheel,Excel2有3个sheel,合并后的会有5个)
* @param outputFileName
* @param inputFileNameArray
*/
public static void mergeExcel(String outputFileName, String... inputFileNameArray) {
if (inputFileNameArray.length == 1) {
logger.info("至少需要两个文件才能合并,请验证!!!");
return;
}
try {
WritableWorkbook outputExcel = Workbook.createWorkbook(new File(outputFileName));
int index = 0;
for (String fileName : inputFileNameArray) {
Workbook inputExcel = Workbook.getWorkbook(new FileInputStream(fileName));
Sheet[] sheets = inputExcel.getSheets();
for (Sheet sheet : sheets) {
WritableSheet writableSheet = outputExcel.createSheet(sheet.getName(), index);
copy(sheet, writableSheet);
index++;
}
}
/** **********将以上缓存中的内容写到EXCEL文件中******** */
outputExcel.write();
/** *********关闭文件************* */
outputExcel.close();
} catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
logger.error(sw.toString());
}
}
private static void copy(Sheet formSheet, WritableSheet toWritableSheet) {
int rows = formSheet.getRows();
int columns = formSheet.getColumns();
for (int rowIndex = 0; rowIndex < rows; rowIndex++) {
for (int columnIndex = 0; columnIndex < columns; columnIndex++) {
Cell cell = formSheet.getCell(columnIndex, rowIndex);
try {
CellFormat wcf = new WritableCellFormat();
if (cell.getCellFormat() != null) {
wcf = cell.getCellFormat();
}
toWritableSheet.addCell(new Label(columnIndex, rowIndex, cell.getContents(), wcf));
} catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
logger.error(sw.toString());
}
}
}
}
仅供参考,可以根据自己的需求加以变动。