导出Excel格式的文件在网上已经有很多了解决方案了,先前都是用报表工具(jasperreport)来弄的,后来打算用opi,jxl,同事说那样子写代码会写很多,所以就用html代码来些,说是可以自动转换。
以下为转换的具体方法:
StringBuilder sb = new StringBuilder(2000);
sb.append("<html>");
sb.append("<head><meta http-equiv=Content-Type content='text/html; charset=utf-8'></head><body>");//这个必须设置,不然只有1条记录的时候,导出会出现乱码
sb.append("<table width='800' border='1' cellpadding='0' cellspacing='0' bordercolor='#000000'>");
sb.append("<caption>");
sb.append("<span style='font-size: medium;font-weight: bold;'>交接班日志列表</span>");
sb.append("</caption>");
sb.append("<tr>");
sb.append("<th width='149' bgcolor='#CCCCFF'>日期</th>");
sb.append("<th width='132' bgcolor='#CCCCFF'>当班时间</th>");
sb.append("<th width='126' bgcolor='#CCCCFF'>值班人</th>");
sb.append("<th width='112' bgcolor='#CCCCFF'>班组</th>");
sb.append("<th width='93' bgcolor='#CCCCFF'>班次</th>");
sb.append("<th width='148' bgcolor='#CCCCFF'>开始值班时间</th>");
sb.append("</tr>");
if (runOnwatchList != null) {
listSize = runOnwatchList.size();
// 循环取出数据填充表格
for (int i = 0; i < listSize; i++) {
sb.append("<tr>");
RunOnwatch runOnwatch = runOnwatchList.get(i);
String[] data = new String[6];
data[0] = DateUtil.format(runOnwatch.getOnwatchdate());
data[1] = runOnwatch.getRunOnwatchorder().getStarttime()
+ "-"
+ runOnwatch.getRunOnwatchorder().getEndtime();
data[2] = runOnwatch.getOnwatchby();
data[3] = runOnwatch.getGroupname();
data[4] = runOnwatch.getGrouporder();
data[5] = DateUtil.format(runOnwatch.getStartwatchtime(),
DateUtil.YMDHMS);
for (int j = 0; j < 6; j++) {
sb.append("<td align='left'>");
sb.append(data[j]);
sb.append("</td>");
}
sb.append("</tr>");
}
}
sb.append("</table>");
sb.append("</body></html>");
;
以下为编码格式:
String fileName = java.net.URLEncoder.encode("交接班日志列表.xls",
"UTF-8");//这个必须设置,不然导出另存为的时候,文件名会出现乱码(支持中文的)
res.setHeader("Content-Type", "application/force-download");
res.setHeader("Content-Type",
"application/vnd.ms-excel;charset='UTF-8'");
res.setHeader("Content-Disposition", "attachment;filename="
+ fileName);
res.setCharacterEncoding("UTF-8");//这个必须设置
PrintWriter pw = res.getWriter();
System.out.print("excelData=="+excelData);
pw.write(excelData);
pw.flush();
pw.close();
分享到:
相关推荐
ASP.NET导出Excel乱码的终极解决方案
解决tableExport导出到excel中文乱码,解决tableExport导出到excel中文乱码,解决tableExport导出到excel中文乱码,解决tableExport导出到excel中文乱码
自从上次用bootstrap table就一直没有解决导出excel的关题,网上找到的那更改tableExport.js和jquery.base64.js的方法虽然可以正常导出,但中文依旧乱码... 解决方法终归是有的....现将文件分享给大家. 里面有table...
仅支持arcgis10.3在windos系统下,属性表中汉字导出excel为乱码的解决方案。
仅支持arcgis10.2在windos系统下,属性表中汉字导出excel为乱码的解决方案。
ArcGIS官方解决方案,根据安装的ArcGIS版本,进行安装即可
解决方案_EXCEL打开Tableau导出数据存在中文乱码情况的解决方案
解决Navicat for MySql 导入EXCEL中文乱码问题解决的有效方法
TOAD导出EXCEL文件时中文乱码解决办法.txt
displaytag-1.1.1-execle@cvs导出中文乱码问题解决.jar
可以解决win7中ARCgis10.5属性表导出dbf乱码问题,修改注册表
解决vtiger联系人导入导出汉子乱码问题,管用!
本资源给出了解决导出excel汉字乱码以及GridView分页问题的方法,希望对你有帮助
解决ecside导出PDF时中文乱码所需的文件,放在工程lib目录下,这是一些字体文件,出现乱码的原因是系统找不到对应的字体定义文件所至
数据导出EXCEL 解决中文名乱码 同时赠由二进制转换成文件(解决中文名乱码)
springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel ...
MySql导出数据乱码的问题,MySql导出数据乱码的问题,MySql导出数据乱码的问题,MySql导出数据乱码的问题,MySql导出数据乱码的问题
解决大批量数据导出Excel产生内存溢出的方案
导出Excel功能,导出Excel功能,导出Excel功能,导出Excel功能
使用aspose导出Excel(根据模板导出excel)