java怎么导出csv文件

 

@RequestMapping(value = "/export")
    @ResponseBody
    public void takeListExport(HttpServletResponse response, Hotel h, Integer tjkId, Integer pageSize){
        String title = "ID,任务名\n";
        ByteArrayOutputStream baos = null;
        BufferedWriter bw = null;
        try {
            baos = new ByteArrayOutputStream();
            bw = new BufferedWriter(new OutputStreamWriter(baos, "UTF-8"));
            baos.write(239); // 0xEF
            baos.write(187); // 0xBB
            baos.write(191);
            bw.write(title);
            String fileName = new String(("酒店采集数据").getBytes("GBK"), "ISO8859-1");
            response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".csv");// 设定输出文件头
            response.setContentType("application/csv");// 定义输出类型

            int pageNum = 1;
            while(true){
                JsonResultBuilder.JsonResult result = this.takeList(h, null, tjkId, pageNum, 200, true);
                PageInfo<Hotel> page = (PageInfo<Hotel>) result.getData();
                List<Hotel> list = page.getList();

                if (CollectionUtils.isEmpty(list)) {
                    break;
                }

                for (Hotel data : list) {
                    StringBuilder sb = new StringBuilder();
                    sb.append(convertCell2(data.getUniqueId()));
                    sb.append(convertCell2(data.getHotelName()));
                    sb.append("\n");
                    bw.write(sb.toString());
                }

                pageNum++;
                bw.flush();

                byte[] data = baos.toByteArray();
                response.getOutputStream().write(data);
                response.getOutputStream().flush();
                baos.reset();
            }
        } catch (Exception e) {
            log.error("#T100 ", e);
        } finally {
            try {
                baos.close();
                bw.close();
            } catch (IOException e) {
                log.error("===exportCsv关闭异常", e);
            }
        }
    }

    protected String convertCell2(Object cell) {
        if (cell == null)
            return ",";
        String result1 = cell.toString().replaceAll("=", "");
        result1 = result1.replaceAll("\\n", "");
        result1 = result1.replaceAll("\n", "");

        result1 = result1.replace("\"", "\"\"");
        result1 = "\"\t" + result1 + "\"";
        return result1 +",";
    }

 

posted @ 2025-12-29 17:34  君子笑而不语  阅读(1)  评论(0)    收藏  举报