使用模板导出jxl表格(jxl)
jxl的jar包下载地址,使用jxl导出带有模板格式的xls表格。下面展示 代码快
.
//在controller使用list集合接收
//如下为业务代码(Service层)
// 获得数据
List<实体类> list = exportExcel();
//创建输出流对象
OutputStream os = null;
//创建工作簿对象
WritableWorkbook workbook = null;
//WorkbookSettings 是使应用程序可以使用各种高级工作簿属性设置,若不使用则相关属性会是默认值
WorkbookSettings wbSettings = null;
try {
// 查询模板路径
String pathname = request.getSession().getServletContext()
.getRealPath("模板所在的文件夹" + File.separator + "模板的名称.xls");
os = response.getOutputStream();
wbSettings = new WorkbookSettings();
wbSettings.setWriteAccess(null);
// 下载文件前,设置响应头
String fileName = new String("下载时模板的名称".getBytes("UTF-8"), "ISO-8859-1");
response.reset();// 清空输出流
response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls");// 设定输出文件头
response.setContentType("application/msexcel");
workbook = Workbook.createWorkbook(os, Workbook.getWorkbook(new File(pathname)), wbSettings);
WritableSheet sheet = workbook.getSheet(0);
// 循环list集合进行填值
for (int i = 0; i < list.size(); i++) {
实体对象 = list.get(i);
setTextForCell(sheet,输入第几列 , (第几行-1) + i, 对象.get数据字段(得到查询出来的数据));
//例子 第二列,第8+i行,第i+1行数据
setTextForCell(sheet, 1, 7 + i, String.valueOf((i + 1)));
//注意int行如下得+""加一个空字符串
setTextForCell(sheet, 2, 7 + i, shiti.getInt() + "");
}
workbook.write();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
workbook.close();
} catch (Exception e1) {
}
try {
os.close();
} catch (Exception e) {
}
}
}
// 读取模板exect表的格式
private void setTextForCell(WritableSheet sheet, int c, int r, String value)
throws RowsExceededException, WriteException {
CellFormat cf = sheet.getCell(c, r).getCellFormat();
if (cf == null) {
sheet.addCell(new Label(c, r, value + ""));
} else {
sheet.addCell(new Label(c, r, value + "", cf));
}
}
<!--导出数据开始 -->
<div class="right">
<form id="searchfm">
<table>
<tr>
</tr>
</table>
</form>
</div>
<!--导出数据结束 -->
// 导出
function der() {
$('#searchfm').attr("action", URL_PREFIX + "");
$('#searchfm').submit();
}