此实现方法仅供参考
因为本人导出数据量不大所采取的方法 如数据量大,会到至内存溢出请知晓
在这还提下:导出时内容自己换行 只需在内容前尾各加双引号就行。
如图:

1、准备导出工具类

// An highlighted block
package com.test;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;public class CSVUtils {/*** 生成为CVS文件* * @param exportData 源数据List* @param map csv文件的列表头map* @param outPutPath 文件路径* @param fileName 文件名称* @return*/@SuppressWarnings("rawtypes")public static File createCSVFile(List exportData, LinkedHashMap map, String outPutPath, String fileName) {File csvFile = null;BufferedWriter csvFileOutputStream = null;try {File file = new File(outPutPath);if (!file.exists()) {file.mkdir();}// 定义文件名格式并创建csvFile = File.createTempFile(fileName, ".csv", new File(outPutPath));System.out.println("csvFile:" + csvFile);// UTF-8使正确读取分隔符","csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "UTF-8"),1024);System.out.println("csvFileOutputStream:" + csvFileOutputStream);// 写入文件头部for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator.hasNext();) {java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next();csvFileOutputStream.write("" + (String) propertyEntry.getValue() != null ?(String) propertyEntry.getValue() : "" + "");if (propertyIterator.hasNext()) {csvFileOutputStream.write(",");}}csvFileOutputStream.newLine();// 写入文件内容for (Iterator iterator = exportData.iterator(); iterator.hasNext();) {Object row = (Object) iterator.next();for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator.hasNext();) {java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next();if(BeanUtils.getProperty(row, (String) propertyEntry.getKey())!=null){csvFileOutputStream.write((String) BeanUtils.getProperty(row, (String) propertyEntry.getKey()));}if (propertyIterator.hasNext()) {csvFileOutputStream.write(",");}}if (iterator.hasNext()) {csvFileOutputStream.newLine();}}csvFileOutputStream.flush();} catch (Exception e) {e.printStackTrace();} finally {try {csvFileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}return csvFile;}/*** 下载文件* * @param response* @param csvFilePath 文件路径* @param fileName 文件名称* @throws IOException*/public static void exportFile(HttpServletResponse response, String csvFilePath, String fileName)throws IOException {response.setContentType("application/csv;charset=UTF-8");response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));InputStream in = null;try {in = new FileInputStream(csvFilePath);int len = 0;byte[] buffer = new byte[1024];response.setCharacterEncoding("UTF-8");OutputStream out = response.getOutputStream();while ((len = in.read(buffer)) > 0) {out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF });out.write(buffer, 0, len);}} catch (FileNotFoundException e) {System.out.println(e);} finally {if (in != null) {try {in.close();} catch (Exception e) {throw new RuntimeException(e);}}}}/*** 删除该目录filePath下的所有文件* * @param filePath 文件目录路径*/public static void deleteFiles(String filePath) {File file = new File(filePath);if (file.exists()) {File[] files = file.listFiles();for (int i = 0; i < files.length; i++) {if (files[i].isFile()) {files[i].delete();}}}}/*** 删除单个文件* * @param filePath 文件目录路径* @param fileName 文件名称*/public static void deleteFile(String filePath, String fileName) {File file = new File(filePath);if (file.exists()) {File[] files = file.listFiles();for (int i = 0; i < files.length; i++) {if (files[i].isFile()) {if (files[i].getName().equals(fileName)) {files[i].delete();return;}}}}}
}

2、实现方法

 public static void proces() {Connection con = getConnection();PreparedStatement ps = null;ResultSet rs = null;List<Map<String, String>> exportData = new ArrayList<Map<String, String>>();try {int num=0;System.out.println("----------------------开始执行-----------------");for (int i = 0; i < 110; i++) {long s = System.currentTimeMillis();String sql = "with tcs as (select max(a.id) id from (select s.id,guid FROM submit s where type_submit=2) a group by a.guid)(select title,content,tm_submit,type_submit,author,keyword,o.name,category,si.style,si.category_area,si.url from submit s left join organization o on s.org_submit=o.id left join submit_outer si on s.id=si.submit_id where s.id =any(select tcs.id from tcs) order by tm_submit desc LIMIT 1000 OFFSET "+num+")";ps = con.prepareStatement(sql);if (ps.execute()) {rs = ps.getResultSet();while(rs.next()){Map<String, String> row = new LinkedHashMap<String, String>();row.put("1", rs.getString(1)); row.put("2",rs.getString(3));String nums=rs.getString(4);String typeName="";if("1".equals(nums)){typeName="境内";}else if("2".equals(nums)){typeName="境外";}else if("3".equals(nums)){typeName="约稿";}row.put("3", typeName);row.put("4", rs.getString(5));row.put("5", rs.getString(6));row.put("6", rs.getString(7));String cat=rs.getString(8);String name="";if("1".equals(cat)){name="动态";}else if("2".equals(cat)){name="专报";}else if("3".equals(cat)){name="专项研究";}else if("4".equals(cat)){name="报道";}else if("5".equals(cat)){name="集纳";}row.put("7", name);String style=rs.getString(9);String stname=null;if("1".equals(style)){stname="论坛";}else if("2".equals(style)){stname="博客";}else if("3".equals(style)){stname="网站";}else if("4".equals(style)){stname="微博";}else if("5".equals(style)){stname="纸媒";}else if("6".equals(style)){stname="微信";}else if("7".equals(style)){stname="APP新闻";}row.put("8", stname);String str=rs.getString(10);String[] strs=null;if(str!=null){strs = str.replace("{", "").replace("}", "").split(",");}row.put("9", getCategoryArea(strs));row.put("10", rs.getString(11));if(rs.getString(2)!=null){row.put("11", '"'+delHTMLtag(rs.getString(2))+'"');}exportData.add(row);}System.out.println("----------------------成功-----------------");}num=num+1000;long e = System.currentTimeMillis();System.out.println("---------------------------------------已循环完第"+(i+1)+"遍----------------------------已缓存"+num+"条数--据耗时:"+(e-s));}LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();map.put("1", "标题");map.put("2", "时间");map.put("3", "类别");map.put("4", "作者");map.put("5", "关键词");map.put("6", "报送单位");map.put("7", "信息类型");map.put("8", "媒体类型");map.put("9", "领域类型");map.put("10", "URL");map.put("11", "内容");String path = "C:/Users/test/Desktop/jar工具/";String fileName = "2019年数据";File file = CSVUtils.createCSVFile(exportData, map, path, fileName);String fileName2 = file.getName();System.out.println("文件名称:" + fileName2);} catch (Exception e) {e.printStackTrace();} finally {close(rs, ps, con);}}``

java导出csv文件 为解决导出excel时每个单元格的限制(32767)相关推荐

  1. php导出数据到csv文件,php导出CSV文件代码 PHP导出数据到CSV 如何排版

    如何使用PHP导出csv和excel文件你走后,再也没有一个声音能让我在人海中突然回首张望. 把Excel文件导入mysql: 打开excel文件,可用phpExcel开源的类 或者: 先把excel ...

  2. php导出csv文件,可导出前导0实例

    实例一:可导出前导0 //导出csv格式文件 $data数据 $title_arr标题 $file_name文件名 function exportCsv($data,$title_arr,$file_ ...

  3. ruoyi导出excel时合并单元格

    ruoyi版本 3.8.2 首先第一步 增加注解 /*** 合并行* 参数1合并第一个参数为合并基准列,其他列用逗号拼接,依据基准列进行当前单元行合并 参数:如1,7, 8*/ public Stri ...

  4. 解决VSTO EXCEL 设置合并单元格锁定时报错问题

    目前,在使用VSTO EXCEL进行开发时,需要后台动态的设置单元格的锁定和解锁,如下: this.Range["A1"].Locked = true; 但是当A1是一个合并单元格 ...

  5. POI读取excel时,单元格内容转化字符串

    最近项目需要使用POI解析excel,但在获取每个单元格时,遇到了把单元格内容转为字符串过程中出现各种问题,整数类型后面带小数点.时间格式变为整数形式等等. 最后通过判断Cell的类型进行分别处理,话 ...

  6. 导出csv文件数字会自动变科学计数法的解决方式

    将数据导出excel文件变成科学计数法问题:     程序导出csv文件时,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学技术法的表现形式.     其实这个问题跟用 ...

  7. phpMyAdmin将数据表中数据导出为csv文件,用微软excel打开时,中文乱码的原因以及解决办法

    中文乱码的原因:用户使用phpMyAdmin可以将数据表中数据导出为csv文件,而使用Excel工具打开该文件时,可能出现中文乱码的情况.这是因为phpMyAdmin导出的csv文件使用了UTF-8编 ...

  8. java导出csv文件乱码_记一次java生成csv文件乱码的解决过程 (GB2312编码)

    系统:win7 (格式:中文(简体,中国)) 工具:Eclipse (默认编码utf-8) 服务两个:[restful接口]  和 [服务*** server]. 场景:[服务*** server]多 ...

  9. java大数据量导出csv文件并压缩

    java大数据量导出csv文件并压缩 java使用POI大数据量导出excel一般会存在以下几个问题: 一次从数据库查询出这么大数据,查询缓慢 查询数据量过大时会内存溢出 解决方案:分页查询数据,比如 ...

最新文章

  1. 【opencv】(3) 图像滤波:均值、方框、中值、高斯
  2. 博士如何高效率阅读文献?有哪些技巧可以借鉴?
  3. spring-boot项目打包时候出现boot-inf文件夹的问题
  4. 石头扫地机器人加速异响_米家扫地机器人有异响怎么办
  5. CPropertyPage::OnSetActive()和OnKillActive()函数:属性页切换时的处理函数
  6. python time strptime_Python中操作时间之strptime()方法的使用
  7. 烧脑又过瘾!关于c²= b² + a²,你不知道的N个事实
  8. containerd客户端工具nerdctl的使用
  9. oracle12漏洞补丁下载,linux oracle 11g 漏洞补丁升级
  10. altium designer快捷键大全
  11. 模式窗口(Window.ShowModalDialogs)中提交不弹出新窗口
  12. 发送HTTP请求返回415状态码的解决办法
  13. opencart seo优化_「opencart seo插件」wordpress SEO插件都有哪些好用的?...
  14. 千牛工作台linux版,深度商店应用千牛工作台、Discord、QQ(Linux)、新浪微博安卓版...
  15. python—生产者消费者模型
  16. JetBrains又出编程神器!
  17. 磁珠的作用以及和电感的区别
  18. 一小时搞定计算机网络面试
  19. 200 万年薪请不到!清华姚班到底有多牛?| 原力计划
  20. 胡润百富今日发布《2020胡润中国最具影响力财经媒体榜》的阅读感受

热门文章

  1. 线性代数学习笔记——行列式的性质及拉普拉斯定理——1. 一阶、二阶和三阶行列式
  2. e生保等待期什么意思_平安e生保,关于等待期出险的详细解说
  3. 《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案 第7章 习题7
  4. C语言不同数据类型间的混合运算转换规则+常见数据类型
  5. ELK入门与基本概念
  6. ACPI相关(5)- PCI热插拔(二)
  7. ACPI相关(11)- PCC实例
  8. matlab数值积分变步长,关于MATLAB数值积分及算例.ppt
  9. 网安--第八章 安全操作系统基础
  10. AndroidStudio设置代码自动提示以及字体大小设置