本文主要是介绍导出到csv 文件(逗号分隔文件)不用poi 导出文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
csv 文件的注意事项: 以逗号分隔; 如果内容中已经存在了逗号,如果内容中已经存在了逗号; 对 其内容进行" 张,三" 这样进行两端加双引号转意思;
如果 数据原来就存在" 那么在 " 前面加上一个" 转义也就是"" 这样; 如 你"好 会转义为 你"" 好;
// response.setCharacterEncoding("gbk");
import cn.itcast.estore.domain.Orderitem;
/**
* 导出榜单
*
* @author seawind
*
*/
public class ExportRankServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 需要榜单数据 ---- 从ServletContext 中获得榜单数据
List<Orderitem> rank = (List<Orderitem>) getServletContext()
.getAttribute("rank");
// 文件下载功能 1 先设置两个头信息;
// 设置文件类型 Content-Type (day20里面有) getServletContext().getMimeType("rank.csv")获取改文件名的contenttype;
response.setContentType(getServletContext().getMimeType("rank.csv"));
// 以附件形式下载 Content-Disposition --- 附件名中文
Date date = new Date(System.currentTimeMillis());// 构造java.sql.Date 当前时间
String fileName = "estore商城销售排行榜_" + date + ".csv";
// 设置附件中文名
String agent = request.getHeader("user-agent");
if (agent.contains("MSIE")) {
// IE --- URL编码
fileName = URLEncoder.encode(fileName, "utf-8");
} else if (agent.contains("Mozilla")) {
// 火狐
BASE64Encoder base64Encoder = new BASE64Encoder();
fileName = "=?UTF-8?B?"
+ new String(base64Encoder.encode(fileName
.getBytes("UTF-8"))) + "?=";
}
response.setHeader("Content-Disposition", "attachment;filename="
+ fileName);
//--------------以上为设置头信息 ; -----------------
response.setCharacterEncoding("gbk");
// 文件下载
PrintWriter out = response.getWriter();
// 先写表头
out.println("排名,商品编号,名称,单价,销售数量");
// 遍历榜单数据
for (int i = 0; i < rank.size(); i++) {
Orderitem orderitem = rank.get(i);
// 输出csv数据时,对商品名称 ,进行特殊处理 --- 转义 ,和" 因为这里只是productname可能含有, 或者
out.println((i + 1) + "," + orderitem.getProduct().getId() + ","
+ convert(orderitem.getProduct().getName()) + ","
+ orderitem.getProduct().getPrice() + ","
+ orderitem.getBuynum());
}
out.flush();
}
// 转义 商品名称中 , 和 "
private String convert(String name) {
// 如果name 中存在 " 转成 ""
name = name.replace("\"", "\"\""); // 一个 " 转换为 "" \ 为转义符号
// 如果包含,返回 name 两端 添加 ""
return "\"" + name + "\"";
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
这篇关于导出到csv 文件(逗号分隔文件)不用poi 导出文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!