linux 导出 excel文件名乱码,excel 导出文件名乱码

因为经常要用到导出功能,之前因为文件名乱码,所以都用英文或是拼音缩写来代替,今天特意要接觉下这个问题。顺便记录下。望对小白有用。

/**

* 导出结算详情列表

* @return

*/

public void  depositLogExport()

{

String title = "押金流水报表";

String excelName = "押金流水报表.xls";

OutputStream os = null;

try

{

int shopId=new Long(getShopLoginer().getShop().getId()).intValue();

if(date==null){

date=new DateBean();

}

int count=service.getCount(shopId, date);

Page pageResult =new Page();

if(count>0){

pageResult = service.list(1, count, shopId, date);

}

List> list = new ArrayList>();

double shopDeposit=getShopLoginer().getShop().getDeposit();

for (DepositLog s : pageResult.getData())

{

Map map = new HashMap();

map.put("id", s.getId());

map.put("depositSn", s.getDepositSn());

map.put("createTime",                     StringUtils.timestampToString(s.getCreateTime()));

map.put("type", type[s.getType()]);

map.put("amount", s.getAmount());

map.put("depositRest", s.getDepositRest());

map.put("depositGap", shopDeposit-s.getDepositRest());

map.put("userName", s.getUserName());

map.put("remarks", s.getRemarks());

list.add(map);

}

// 表格表头

String[] header = {"流水号","流水时间","类型","流水金额","押金余额","押金缺口","操作人","备注"};

// 对应Map中的key

String[] key = { "depositSn", "createTime","type",

"amount", "depositRest", "depositGap", "userName", "remarks"};

HSSFWorkbook workbook = null;

HttpServletResponse response = ServletActionContext

.getResponse();

workbook = ExportUtil.workPaperExport(list, header, key,

title, true, null, null, null);

os = response.getOutputStream();

response.setHeader("Content-disposition",

"attachment; filename=" + toUtf8String(excelName));

response.setContentType("application/msexcel;charset=UTF-8");

workbook.write(os);

os.flush();

} catch (Exception e) {

if (logger.isDebugEnabled())

logger.error(e.getMessage(), e);

e.printStackTrace();

} finally {

try {

if (os != null)

os.close();

} catch (IOException e) {

if (logger.isInfoEnabled())

logger.error(e.getMessage(), e);

e.printStackTrace();

}

}

//return null;

}

//文件名乱码处理

public static String toUtf8String(String s){

StringBuffer sb = new StringBuffer();

for (int i=0;i

char c = s.charAt(i);

if (c >= 0 && c <= 255){sb.append(c);}

else{

byte[] b;

try { b = Character.toString(c).getBytes("utf-8");}

catch (Exception ex) {

System.out.println(ex);

b = new byte[0];

}

for (int j = 0; j < b.length; j++) {

int k = b[j];

if (k < 0) k += 256;

sb.append("%" + Integer.toHexString(k).toUpperCase());

}

}

}

return sb.toString();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值