Java 导出中文文件名的excle表格
Java 导出中文文件名的excle表格代码如下:
String fileName="账单明细.xls";
String userAgent = request.getHeader("user-agent");
// response.setHeader("Content-disposition", "attachment; filename=" + new String("账单明细.xls".getBytes("gb2312"), "ISO8859-1"));
if (userAgent != null && userAgent.indexOf("Firefox") >= 0 ||
userAgent.indexOf("Chrome") >= 0 ||
userAgent.indexOf("Safari") >= 0) {
fileName= new String((fileName).getBytes(), "ISO8859-1");
} else {
fileName= URLEncoder.encode(fileName,"UTF8"); //其他浏览器
}
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
导出exlce全部代码:
@Override
public void exportLtsRecieveListExcle(LtsAgencyFundQuery query, HttpServletResponse response, HttpServletRequest request) {
Result<List<LtsAgencyFundDto>> result = agencyFundFacadeService.selectLtsRecieveList(query);
if ("success".equals(result.getResult())&&result.getData()!=null) {
List<LtsAgencyFundDto> data =result.getData();
OutputStream os;
try {
os = response.getOutputStream();
response.reset();
String fileName="账单明细.xls";
String userAgent = request.getHeader("user-agent");
// response.setHeader("Content-disposition", "attachment; filename=" + new String("账单明细.xls".getBytes("gb2312"), "ISO8859-1"));
if (userAgent != null && userAgent.indexOf("Firefox") >= 0 ||
userAgent.indexOf("Chrome") >= 0 ||
userAgent.indexOf("Safari") >= 0) {
fileName= new String((fileName).getBytes(), "ISO8859-1");
} else {
fileName= URLEncoder.encode(fileName,"UTF8"); //其他浏览器
}
response.setHeader("Content-disposition", "attachment; filename=" + fileName);
response.setContentType("application/msexcel");// 定义输出类型
WritableWorkbook workbook = Workbook.createWorkbook(os);
WritableSheet sheet = workbook.createSheet("Sheet1", 0);
// write title
sheet.addCell(new Label(0, 0, "运单号"));
sheet.addCell(new Label(1, 0, "人"));
sheet.addCell(new Label(2, 0, "状态"));
sheet.addCell(new Label(3, 0, "方式"));
sheet.addCell(new Label(4, 0, "开单时间"));
sheet.addCell(new Label(5, 0, "发车时间"));
sheet.addCell(new Label(6, 0, "收款金额(元)"));
sheet.addCell(new Label(7, 0, "收款已收(元)"));
sheet.addCell(new Label(8, 0, "收款未收(元)"));
sheet.addCell(new Label(9, 0, "收手续费(元)"));
sheet.addCell(new Label(10, 0, "手续费已付(元)"));
sheet.addCell(new Label(11, 0, "手续费未付(元)"));
sheet.addCell(new Label(12, 0, "联系人"));
sheet.addCell(new Label(13, 0, "手机号"));
sheet.addCell(new Label(14, 0, "地址"));
sheet.addCell(new Label(15, 0, "站点"));
sheet.addCell(new Label(16, 0, "联系人"));
sheet.addCell(new Label(17, 0, "手机号"));
sheet.addCell(new Label(18, 0, "地址"));
sheet.addCell(new Label(19, 0, "站"));
sheet.addCell(new Label(20, 0, "名称"));
sheet.addCell(new Label(21, 0, "数量(件)"));
sheet.addCell(new Label(22, 0, "重量(公斤)"));
sheet.addCell(new Label(23, 0, "体积(方)"));
// write data
int i = 1;
for (LtsAgencyFundDto vo : data) {
String deliveryType="";
if (vo.getDeliveryType() == 1) {
deliveryType="提";
}else if (vo.getDeliveryType() == 2) {
deliveryType="货";
}
String inStatus="";
if (vo.getBranchCostInStatus() == 1) {
inStatus="回收";
}else if (vo.getBranchCostInStatus() == 2) {
inStatus="部分";
}else if (vo.getBranchCostInStatus() == 3) {
inStatus="回收";
}
sheet.addCell(new Label(0, i, vo.getWayBillNo()));
sheet.addCell(new Label(1, i, vo.getBranchCostCustomerName()));
sheet.addCell(new Label(2, i, inStatus));
sheet.addCell(new Label(3, i, deliveryType));
sheet.addCell(new Label(4, i, date2Str(vo.getInputDate(),FMT_STANDARD_LONG)));
sheet.addCell(new Label(5, i, date2Str(vo.getSignTime(),FMT_STANDARD_LONG)));
sheet.addCell(new Label(6, i, vo.getBranchCost()));
sheet.addCell(new Label(7, i, vo.getBranchCostIn()));
sheet.addCell(new Label(8, i, vo.getWaitOut()));
sheet.addCell(new Label(9, i, vo.getCost()));
sheet.addCell(new Label(10, i, ""));
sheet.addCell(new Label(11, i, ""));
sheet.addCell(new Label(12, i, vo.getShipperName()));
sheet.addCell(new Label(13, i, vo.getShipperPhone()));
sheet.addCell(new Label(14, i, vo.getfAddress()));
sheet.addCell(new Label(15, i, vo.getfSiteName()));
sheet.addCell(new Label(16, i, vo.getReceiverName()));
sheet.addCell(new Label(17, i, vo.getReceiverPhone()));
sheet.addCell(new Label(18, i, vo.gettAddress()));
sheet.addCell(new Label(19, i, vo.gettSiteName()));
sheet.addCell(new Label(20, i, vo.getGoodsName()));
sheet.addCell(new Label(21, i, vo.getGoodsCount()));
sheet.addCell(new Label(22, i, vo.getGoodsWeight()));
sheet.addCell(new Label(23, i, vo.getGoodsVolume()));
i++;
}
workbook.write();
workbook.close();
os.flush();
} catch (IOException e){
LOGGER.error("exportLtsRecieveListExcle error param="+query,e);
throw new ServiceException("500","导出失败");
} catch (Exception e) {
LOGGER.error("exportLtsRecieveListExcle error param="+query,e);
throw new ServiceException("500","导出失败");
}
} else {
throw new ServiceException("500","数据查询失败");
}
}
推荐阅读
-
bootstrap table和tableExport导出支持中文的Excel和pdf等表格
-
JQuery Plugin-TableExport实现前端表格的导出功能(已解决表格pdf导出中文格式问题)
-
Java导出多sheet的Excel表格
-
Java中FTPClient上传中文目录及文件名乱码的解决方法
-
Java中FTPClient上传中文目录及文件名乱码的解决方法
-
jmesa 导出excel文件名中文乱码的解决
-
jmesa 导出excel文件名中文乱码的解决
-
vue文件下载(我这里下载的是excel表格)ajax下载,后端java excel导出(实现vue axios引入及配置拦截器 axios发送请求下载文件 后端excel下载 )
-
Java 导出中文文件名的excle表格
-
java 导出数据为xls文件,导出Excle表格