jxl将list导入到Excel中供下载详解编程语言

jxl操作excel

    /** 
* 分隔符 
*/ 
private final static String SEPARATOR = "|"; 
/** 
* 由List导出至指定的Sheet,带total行(最后一行) 
* @param wb   模板的workbook 
* @param sheetNum   第几个表单 
* @param targetFilePath 生成文件夹路径 
* @param l 内容list集合,以|分割的对象string集合 
* @param headInfoRows  头信息的行数 
* @param columnsLength  列数 
* @param remarkRowNumber 备注所在行 
* @param remark  备注 
* @return 
* @throws WriteException 
* @throws IOException 
* int 
*/ 
public static int exportExcelFromList(jxl.Workbook wb, int sheetNum, 
String targetFilePath, List<String> l, int headInfoRows, 
int columnsLength,int remarkRowNumber,String remark) throws WriteException, IOException { 
// 创建可写入的Excel工作薄对象 
WritableWorkbook wwb = null; 
int writeCount = 0; 
// 单元格样式 
// WritableFont bold = new 
// WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示 
WritableCellFormat normalFormat = new WritableCellFormat( 
NumberFormats.TEXT); 
normalFormat.setBorder(Border.ALL, BorderLineStyle.THIN, 
jxl.format.Colour.BLACK); 
//设置字体;   
WritableFont font = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.RED);   
WritableCellFormat normalFormat_total = new WritableCellFormat( 
font); 
normalFormat_total.setBorder(Border.ALL, BorderLineStyle.THIN, 
jxl.format.Colour.BLACK); 
try { 
// 创建可写入的Excel工作薄对象 
wwb = jxl.Workbook.createWorkbook(new File(targetFilePath), wb); 
WritableSheet ws = wwb.getSheet(0); 
Label cellRemark = new Label(0, remarkRowNumber, remark, 
normalFormat); 
ws.addCell(cellRemark); 
int row = l.size(); 
int columns = columnsLength; 
String[] ary = new String[120]; 
for (int i = 0; i < row; i++) { 
ary = l.get(i).split("//" + SEPARATOR); 
for (int j = 0; j < columns; j++) { 
if(i==row-1) 
{ 
Label cell = new Label(j, i + headInfoRows, ary[j], 
normalFormat_total); 
ws.addCell(cell); 
}else 
{ 
Label cell = new Label(j, i + headInfoRows, ary[j], 
normalFormat); 
ws.addCell(cell); 
} 
} 
writeCount++; 
} 
wwb.write(); 
} catch (Exception ex) { 
ex.printStackTrace(); 
} finally { 
if (wwb != null) { 
wwb.close(); 
} 
} 
return writeCount; 
} 
/** 
* 导出不需要合计行 
* @param wb 
* @param sheetNum 
* @param targetFilePath 
* @param l 
* @param headInfoRows 
* @param columnsLength 
* @param remarkRowNumber 
* @param remark 
* @return 
* @throws WriteException 
* @throws IOException 
*/ 
public static int exportExcelFromListNoTotal(jxl.Workbook wb, int sheetNum, 
String targetFilePath, List<String> l, int headInfoRows, 
int columnsLength,int remarkRowNumber,String remark) throws WriteException, IOException { 
// 创建可写入的Excel工作薄对象 
WritableWorkbook wwb = null; 
int writeCount = 0; 
// 单元格样式 
// WritableFont bold = new 
// WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示 
WritableCellFormat normalFormat = new WritableCellFormat( 
NumberFormats.TEXT); 
normalFormat.setBorder(Border.ALL, BorderLineStyle.THIN, 
jxl.format.Colour.BLACK); 
//设置字体;   
WritableFont font = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);   
WritableCellFormat normalFormat_total = new WritableCellFormat( 
font); 
normalFormat_total.setBorder(Border.ALL, BorderLineStyle.THIN, 
jxl.format.Colour.BLACK); 
try { 
// 创建可写入的Excel工作薄对象 
wwb = jxl.Workbook.createWorkbook(new File(targetFilePath), wb); 
WritableSheet ws = wwb.getSheet(0); 
Label cellRemark = new Label(0, remarkRowNumber, remark, 
normalFormat); 
ws.addCell(cellRemark); 
int row = l.size(); 
int columns = columnsLength; 
String[] ary = new String[120]; 
for (int i = 0; i < row; i++) { 
ary = l.get(i).split("//" + SEPARATOR); 
for (int j = 0; j < columns; j++) { 
Label cell = new Label(j, i + headInfoRows, ary[j], 
normalFormat); 
ws.addCell(cell); 
} 
writeCount++; 
} 
wwb.write(); 
} catch (Exception ex) { 
ex.printStackTrace(); 
} finally { 
if (wwb != null) { 
wwb.close(); 
} 
} 
return writeCount; 
}
exportList为List<String>,生成方式为遍历每个对象并将所有属性以|串起来
        List<DetectorHistory> dfList = service.getList();   //获取对象集合 
List<String> exportList = new ArrayList<String>(); 
StringBuffer sbList = new StringBuffer(); 
if (dfList!=null&&dfList.size()>0) { 
for (DetectorHistory ele:dfList) { 
sbList.delete(0, sbList.length());
          //加入|
//加入属性
... exportList.add(sbList.toString()); } }
controller层
        //模板所在文件夹路径 
String tempPath = req.getSession().getServletContext() 
.getRealPath(CommonValue.FileTemplatePath); 
//生成文件所在文件夹路径 
String exportFilePath = req.getSession().getServletContext() 
.getRealPath(CommonValue.ExportFilePath); 
//导出文件名 
String exportFileName = ""; 
//模板文件名,事先生成好以及头文件情况 
String targetFileName = "ReportTmp_detectorHistory.xls"; 
//生成的行数 
int operatorCount = 0;  
JSONObject jsonObject = new JSONObject(); 
try { 
// 文件导出 
if (exportList.size() > 0) { 
//生成文件名 
exportFileName = "detectorHistory" + CommonTool.getNowDateStr2() 
+ "." + targetFileName.split("//.")[1]; 
//利用模板生成Workbook 
Workbook rw = jxl.Workbook.getWorkbook(new File(tempPath 
+ File.separator + targetFileName)); 
// 写入备注文件 
String remarkInfo = "统计时间:" + CommonTool.getNowDateStr2() + "    金额单位:元"; 
//rw为模板workbook,0为sheetnum,其次为导出文件路径,exportList为|分割属性的string对象集合,4为头的行数,14为列数,1为备注所在行(从0开始),remarkinfo为备注所在行的信息 
operatorCount = ExcelHelper_ChargeSituation.exportExcelFromListNoTotal(rw, 
0, exportFilePath + File.separator + exportFileName, 
exportList, 4, 14, 1, remarkInfo); 
} 
jsonObject.put("operatorCount", operatorCount);  //返回操作条数 
jsonObject.put("exportFilePath", CommonValue.ExportFilePath 
+ File.separator + exportFileName);  //返回生成的文件路径 
if(jsonObject.get("operatorCount")!=null&&Integer.valueOf(jsonObject.get("operatorCount").toString())<=0) 
{//当生成内容条数为0时 
jsonObject.put("rtnCode", "404"); 
}else 
{ 
jsonObject.put("rtnCode", "0"); 
} 
} catch (BiffException e) { 
e.printStackTrace(); 
} catch (WriteException e) { 
e.printStackTrace(); 
}finally{ 
} 
res.resetBuffer(); 
res.setContentType("text/html;charset=UTF-8"); 
res.getOutputStream().write(jsonObject.toString().getBytes("utf-8")); 
res.getOutputStream().flush(); 
return null; 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17816.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论