数据导出到Excel几乎是所有客户都会提出的一个需求。下面我就分享一下我的代码。
代码分为本地和有请求响应的,主方法相同
jar包
然后就是正式代码了!!
主方法:
@Test
public void main1() throws Exception {
String sheetName = "部门统计表单";
String titleName = "部门数据统计表";
String fileName = "部门统计表单";
int columnNumber = 3;
int[] columnWidth = { 10, 20, 30 };
String[][] dataList = { { "001", "2015-01-01", "董事局" },
{ "002", "2015-01-02", "市场部" }, { "003", "2015-01-03", "技术部" } };
String[] columnName = { "单号", "创办时间", "部门名称" };
ExportNoResponse(sheetName, titleName, fileName,
columnNumber, columnWidth, columnName, dataList);
}
然后是有请求响应的:
public void ExportWithResponse(String sheetName, String titleName,
String fileName, int columnNumber, int[] columnWidth,
String[] columnName, String[][] dataList,
HttpServletResponse response) throws Exception {
if (columnNumber == columnWidth.length&& columnWidth.length == columnName.length) {
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// sheet.setDefaultColumnWidth(15); //统一设置列宽
for (int i = 0; i < columnNumber; i++)
{
for (int j = 0; j <= i; j++)
{
if (i == j)
{
sheet.setColumnWidth(i, columnWidth[j] * 256); // 单独设置每列的宽
}
}
}
// 创建第0行 也就是标题
HSSFRow row1 = sheet.createRow((int) 0);
row1.setHeightInPoints(50);// 设备标题的高度
// 第三步创建标题的单元格样式style2以及字体样式headerFont1
HSSFCellStyle style2 = wb.createCellStyle();
style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
style2.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.index);
style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFFont headerFont1 = (HSSFFont) wb.createFont(); // 创建字体样式
headerFont1.setBoldweigh