利用 poi 工具类将 list 中的内容填充到 excel 表格中
/**
* @param outpath 输出到哪个文件(即路径. 文件需存在!)
* @param value 其他辅助字符串,本方法中用来填充表头
* @param list 需要填充到excel表中的主要内容
* @throws Exception
*/
public void exportVehicleParameterComparisonTable(String outpath,String value, List<CarParamDetailEO> list) throws Exception {
String carmodel1 = "";
String carmodel2 = "";
String[] values = value.split(";");
carmodel1 = values[0].split("_")[1];
carmodel2 = values[1].split("_")[1];
String model_path= "D:\hcs\model.xlsx"; // 模板路径
//#2 拷贝新的文件
File in=new File(model_path);//读取文件模板
File out =new File(outpath);//输出文件可改名
Common.copyFile(in, out);//复制文件
FileInputStream readFile;
try {
readFile = new FileInputStream(out);
XSSFWorkbook wb = new XSSFWorkbook(readFile);//创建工作薄文件
//在文档中添加表单
XSSFSheet sheet1 = wb.getSheet("Sheet1");
XSSFFont font = wb.createFont();
font.setColor(HSSFColor.RED.index);
XSSFCellStyle styleRedFont = wb.createCellStyle();//总体单元格样式,需要其他样式可在下面代码再加
styleRedFont.setAlignment(XSSFCellStyle.ALIGN_LEFT); // 创建一个左对齐格式
styleRedFont.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
styleRedFont.setBorderBottom(XSSFCellStyle.BORDER_THIN); //下边框
styleRedFont.setBorderLeft(XSSFCellStyle.BORDER_THIN);//左边框
styleRedFont.setBorderTop(XSSFCellStyle.BORDER_THIN);//上边框
styleRedFont.setBorderRight(XSSFCellStyle.BORDER_THIN);//右边框
styleRedFont.setWrapText(true);//自动换行
styleRedFont.setFont(font);
XSSFCellStyle style = wb.createCellStyle();//总体单元格样式,需要其他样式可在下面代码再加
style.setAlignment(XSSFCellStyle.ALIGN_LEFT); // 创建一个左对齐格式
style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
style.setBorderBottom(XSSFCellStyle.BORDER_THIN); //下边框
style.setBorderLeft(XSSFCellStyle.BORDER_THIN);//左边框
style.setBorderTop(XSSFCellStyle.BORDER_THIN);//上边框
style.setBorderRight(XSSFCellStyle.BORDER_THIN);//右边框
style.setWrapText(true);//自动换行
/*创建行*/
XSSFRow row;
/*创建列,即单元格cell*/
XSSFCell cell;
/*创建单元格内字体样式*/
XSSFRichTextString carmodel1Style = new XSSFRichTextString(carmodel1+"_结构参数");
XSSFRichTextString carmodel2Style = new XSSFRichTextString(carmodel2+"_结构参数");
/*设置一个单元格内部分字体*/
carmodel1Style.applyFont(0, (carmodel1+"_结构参数").lastIndexOf("_"), font);
carmodel2Style.applyFont(0, (carmodel2+"_结构参数").lastIndexOf("_"), font);
row = sheet1.createRow(0);
cell = row.createCell(0);
cell.setCellValue("序号");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("参数项名称");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue(carmodel1Style);
cell.setCellStyle(style);
cell = row.createCell(3);
cell.setCellValue(carmodel1Style);
cell.setCellStyle(style);
/*用来确定填充到第多少行*/
int m = 1;
/*读取list中的内容逐行填充到excel中*/
for (CarParamDetailEO eo : list) {
String orderNumber = eo.getOrderNumber() == null ? "" : eo.getOrderNumber().trim();
String parameterName = eo.getParameterName() == null ? "" : eo.getParameterName().trim();
String paramcontent = eo.getParamcontent() == null ? "" : eo.getParamcontent().trim();
String paramcontent0 = eo.getParamcontent0() == null ? "" : eo.getParamcontent0().trim();
row = sheet1.createRow(m++);
cell = row.createCell(0);
cell.setCellValue(orderNumber);
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue(parameterName);
cell.setCellStyle(style);
/*此处判断两个单元格数据是否相同, 不同则设为红色样式*/
if (paramcontent.equals(paramcontent0)){
cell = row.createCell(2);
cell.setCellValue(paramcontent);
cell.setCellStyle(style);
cell = row.createCell(3);
cell.setCellValue(paramcontent0);
cell.setCellStyle(style);
} else {
cell = row.createCell(2);
cell.setCellValue(paramcontent);
cell.setCellStyle(styleRedFont);
cell = row.createCell(3);
cell.setCellValue(paramcontent0);
cell.setCellStyle(styleRedFont);
}
}//for
/*创建输出流*/
FileOutputStream ouputStream=new FileOutputStream(out);
try {
/*将填充的数据写入文件*/
wb.write(ouputStream);
} catch (Exception e) {
e.printStackTrace();
}finally{
ouputStream.close();
ouputStream.flush();
}
} catch (Exception e) {
logger.error(e);
e.printStackTrace();
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于