导入jxl包
//1请求对象。2、相对路径。3、文件名称,4、标题名称。5、集合
public void excel(HttpServletRequest request,String path,String fileName,String titleName,List<SdProduct> list) {
try {
//使用WritableCellFormat 的setWrap(true)可以设成自动换行,然后再用WritableSheet的setRowView设置行的高度,setColumnView设置列的宽度
WritableWorkbook wbook = Workbook.createWorkbook(new File(request.getRealPath(path) + "\\"+fileName)); // 建立excel文件
WritableSheet wsheet = wbook.createSheet("供求商机表", 0); // 工作表名称
// 设置Excel字体
WritableFont wfont = new WritableFont(WritableFont.ARIAL, 14,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.RED);
WritableFont font = new WritableFont(WritableFont.ARIAL, 12,
WritableFont.BOLD, false,
jxl.format.UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
WritableCellFormat nameFormat = new WritableCellFormat(wfont);
WritableCellFormat titleFormat = new WritableCellFormat(font);
String[] title = { "标 题", "联系人", "座 机", "手 机" , "简 介" };
// 设置Excel标题头
wsheet.mergeCells(0, 0, 5, 0); // 合并单元格
Label excelTitle1 = new Label(0, 0, titleName, nameFormat);
wsheet.addCell(excelTitle1);
// 设置Excel表头
for (int i = 0; i < title.length; i++) {
Label excelTitle = new Label(i, 1, title[i], titleFormat);
wsheet.addCell(excelTitle);
}
int c = 2; // 用于循环时Excel的行号
Iterator it = list.iterator();
while (it.hasNext()) {
SdProduct sd = (SdProduct) it.next();
Label content1 = new Label(0, c, sd.getSdTitle().replaceAll("<[^>]*>", ""));//去掉HTML的所有标签
Label content2 = new Label(1, c, sd.getSdConName());
Label content3 = new Label(2, c, sd.getSdMobile());
Label content4 = new Label(3, c, sd.getSdTel());
String comment = sd.getSdComment().replaceAll("<[^>]*>", "");
Label content5 = new Label(4, c, comment.replaceAll(" ", ""));
wsheet.setColumnView(0, 40);
wsheet.setColumnView(1, 12);
wsheet.setColumnView(2, 13);
wsheet.setColumnView(3, 14);
wsheet.setColumnView(4, 50);
wsheet.addCell(content1);
wsheet.addCell(content2);
wsheet.addCell(content3);
wsheet.addCell(content4);
wsheet.addCell(content5);
c++;
}
wbook.write(); // 写入文件
wbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}