/* 调用示例:
String fileName = "Event";
response.setHeader("ContentEncoding", "GB2312");
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + ".xls\"");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setDateHeader("Expires", (System.currentTimeMillis() + 1000));
ArrayList list2=new ArrayList();
for (int i = 0; i < list.size(); i++) {
list2.add(list.get(i));
}
ExportExcel excel = new ExportExcel(list2);
excel.getExcel(alias, names, fileName,60000, response.getOutputStream());
return null;
*/
/**
* 对list数据源将其里面的数据导入到excel表单
* @param fieldName[] 导出到excel文件里的表头名
* @param columnIt[] 导出到excel文件里的表头NAME
* @param sheetName 工作表的名称
* @param sheetSize 每个sheet中数据的行数,此数值必须小于65536
* @param output java输出流
*/
public boolean getExcel(String[] fieldName,Object[] columnIt,String sheetName,int sheetSize,OutputStream output){
HSSFWorkbook workbook = new HSSFWorkbook();//产生工作薄对象
if(sheetSize>=65536) {
sheetSize=65536;
}
double sheetNo = Math.ceil(list.size()/sheetSize);
for (int index = 0; index <= sheetNo; index++) {
HSSFSheet sheet = workbook.createSheet();//产生工作表对象
workbook.setSheetName(index,sheetName + index,HSSFWorkbook.ENCODING_UTF_16);//为了工作表能支持中文,设置字符集为UTF_16
HSSFRow row = sheet.createRow(0);//产生一行
HSSFCell cell;//产生单元格
//写入各个字段的名称
for(int i=0;i <fieldName.length;i++){
cell = row.createCell((short)i); //创建第一行各个字段名称的单元格
cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格内容为字符串型
cell.setEncoding(HSSFCell.ENCODING_UTF_16); //为了能在单元格中输入中文,设置字符集为UTF_16
cell.setCellValue(fieldName[i]); //给单元格内容赋值
}
int startNo=index*sheetSize;
int endNo=Math.min(startNo+sheetSize, list.size());
//写入各条记录,每条记录对应excel表中的一行
for(int i=startNo;i <endNo;i++){
row = sheet.createRow(i+1-startNo);
HashMap map = (HashMap)list.get(i);
for(int j=0;j <columnIt.length;j++){
cell = row.createCell((short)j);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
Object value = map.get(columnIt[j]);
if(value!=null){
cell.setCellValue(map.get(columnIt[j]).toString());
}else
cell.setCellValue("");
}
}
}
try{
output.flush();
workbook.write(output);
output.close();
return true;
} catch (IOException e){
e.printStackTrace();
System.out.println( "Output is closed ");
return false;
}
}
poi导出到excel方法封装
最新推荐文章于 2025-08-08 22:01:10 发布