import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.alibaba.fastjson.JSONObject; import com.vservice.es.encaplables.LableForEnCh; public class CSVUtils { private static final Logger logger = Logger.getLogger(CSVUtils.class); static Map<String, String> titles = new HashMap<String, String>(); static { // 首行列对应的中文名 Map<String, String> titleCName = new HashMap<String, String>(); titleCName.put("name", "姓名"); titleCName.put("gender", "性别"); // 列排序用 List<String> titleList = new ArrayList<String>(); titleList.add("name"); // 姓名 titleList.add("gender"); // 性别 List<String> titleNameList = new ArrayList<String>(); String lableName = null; for (String string : titleList) { lableName = titleCName.get(string); titleNameList.add(StringUtils.isNotBlank(lableName) ? lableName : ""); } for (int i = 0; i < titleList.size(); i++) { // 根据titleList先后顺序排序 titles.put(i + titleList.get(i), titleNameList.get(i)); } } public static boolean createCSVFile(List<JSONObject> jsonArray, String exportPath) { long begin = System.currentTimeMillis(); File csvFile = null; BufferedWriter csvWtriter = null; FileOutputStream fos = null; OutputStreamWriter osw = null; try { String ePath = exportPath + File.separator + System.nanoTime() + ".csv"; csvFile = new File(ePath); fos = new FileOutputStream(csvFile); osw = new OutputStreamWriter(fos); // bom utf-8格式保存文件 osw.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF })); csvWtriter = new BufferedWriter(osw, 1024); String[] tilteKeys = getTilteKeys(); StringBuffer head = new StringBuffer(); StringBuffer rowS = null; for (int i = 0; i < jsonArray.size(); i++) { if (null == rowS) { rowS = new StringBuffer(); } JSONObject obj = jsonArray.get(i); for (int j = 0; j < tilteKeys.length; j++) { if (i == 0) { String tille = titles.get(j + tilteKeys[j]); head.append("\"").append(tille).append("\","); if (j == tilteKeys.length - 1) { csvWtriter.write(head.toString()); csvWtriter.newLine(); } } String title = (String) tilteKeys[j]; String value = obj.getString(title); if (StringUtils.isNotBlank(value) && StringUtils.isNumeric(value)) { value = value + "\t"; } rowS.append("\"").append(StringUtils.isNotBlank(value) ? value : "").append("\","); if (j == tilteKeys.length - 1) { csvWtriter.write(rowS.toString()); csvWtriter.newLine(); rowS = null; } } } csvWtriter.flush(); return true; } catch (Exception e) { logger.error(e.getMessage(), e); } finally { IOUtils.closeQuietly(csvWtriter); IOUtils.closeQuietly(fos); IOUtils.closeQuietly(osw); long end = System.currentTimeMillis(); logger.info("export use time :" + (end - begin) + "ms"); } return false; } private static String getNum(String str) { str = str.trim(); String num = ""; if (str != null && !"".equals(str)) { for (int i = 0; i <= 3; i++) { if (str.charAt(i) >= 48 && str.charAt(i) <= 57) { num += str.charAt(i); } } } return num; } private static String[] getTilteKeys() { Object[] keys = titles.keySet().toArray(); String[] tilteKeys = new String[keys.length]; for (int i = 0; i < keys.length; i++) { String temp = keys[i].toString(); String numStr = getNum(temp); int orderNum = Integer.valueOf(numStr); tilteKeys[orderNum] = temp.substring(numStr.length()); } return tilteKeys; } public static void main(String args[]) { try { List<JSONObject> listData = new ArrayList<JSONObject>(); JSONObject vo = new JSONObject(); vo.put("gender", "男"); vo.put("name", "李斯"); listData.add(vo); String path = "D:/006_test/"; File file = new File(path); if (!file.exists()) { if (file.getParentFile().exists()) { file.getParentFile().mkdirs(); } file.createNewFile(); } createCSVFile(listData, path); } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
java导出数据时,如果对数据格式没有特殊要求,为了提高效率可以导出CSV格式的文件,导出CSV文件不支持多个sheet页。
标题"thinkphp下导入导出csv文件"涉及到的主要知识点包括: 1. CSV文件格式:CSV文件是以逗号分隔的纯文本文件,每个记录占据一行,每个字段之间由逗号分隔。这种格式使得数据可以轻松地在各种应用程序之间传递,如...
1-Gbase导出csv文件教程
通过以上步骤,你已经实现了在Java中导出CSV文件,然后将其压缩成ZIP格式,并提供了一个Web接口供用户下载。确保正确配置你的服务器和文件路径,以适应实际项目的需求。同时,不要忘记处理可能出现的异常,以确保...
导出CSV文件的基本过程包括以下步骤: 1. **数据准备**:首先,你需要获取要导出的数据。这通常来自数据库查询,但也可能是内存中的数据结构,如List或DataTable。确保数据正确无误且符合预期格式。 2. **响应设置...
ASP.NET 导出 CSV 文件 本文档将详细介绍如何使用 ASP.NET 导出 CSV 文件,包括相关的代码实现和知识点解析。 标题解释 ASP.NET 导出 CSV 文件是指使用 ASP.NET 框架将数据导出到 CSV 文件格式中。CSV(Comma ...
`csv.js`库为JavaScript开发者提供了强大且灵活的CSV处理能力,无论是解析还是导出CSV文件,都能轻松应对。通过熟练掌握`csv.js`,你可以更高效地在Web应用中处理CSV数据,提升开发效率。在实际项目中,根据具体需求...
1.浏览器点击导出按钮,直接下载到本地,服务器不生成临时文件; 2.生成csv,中文无乱码,数据不会科学计数法; 3.支持大数据下载; 4.后台服务java语言实现,前端不限制; 5.前端代码: [removed]void(0)" class=...
使用io流写如文件导出csv文件,使用jsp实现。简单的方法可以推广!
fastadmin 导出csv文件
然而,由于编码问题,有时在导出CSV文件时会出现乱码。本示例将详细讲解如何使用PHP正确地导出CSV文件,避免出现乱码情况,并介绍相关的关键知识点。 首先,我们需要了解字符编码的基本概念。在处理文本数据时,...
sqlserver数据库用,指定查询语句执行后导出指定路径下生成csv文件
### Oracle、Teradata、Hive、GBase、DB2 导出 CSV 文件命令总结 #### 一、Oracle 数据库导出 CSV 文件 ##### 1. 通过 Spool 指令实现 Oracle 提供了 `spool` 命令来帮助我们将查询结果输出到一个文本文件中,...
然后,我们可以开始编写Ruby代码来导出CSV文件。以下是一个基本示例,展示了如何创建并写入CSV文件: ```ruby require 'fastercsv' # 定义要导出的数据 data = [ ['Name', 'Age', 'City'], ['John', 30, 'New ...
综上所述,通过使用univocity-parsers库,我们可以在Java后端将数据导出为CSV文件,然后利用JSch库将生成的CSV文件安全地上传到SFTP服务器。这个过程涉及到了文件操作、网络传输和安全性等多个方面的知识,对于开发...
在这个实例中,"一个用servlet实现导出csv文件的实例 - Java编程.htm"可能是博主分享的详细代码示例,而"一个用servlet实现导出csv文件的实例 - Java编程_files"可能包含与文章相关的其他辅助文件。在实际操作中,你...
1. **导出CSV文件** CSV(Comma Separated Values)是一种通用的文件格式,大多数电子表格软件如Excel都可以打开。在Asp.net中,我们可以直接将数据写入到Response流中,以逗号分隔的方式生成CSV文件。优点是简单...
总之,解决Oracle导出CSV文件显示乱码的关键在于理解字符编码和数据解析的过程。通过正确设置文件的编码和应用正确的分隔符,可以确保数据在不同程序间顺利转换并保持可读性。如果上述方法无效,可能需要检查数据库...
标题中的“poi导出csv文件”指的是使用Apache POI库来生成CSV(逗号分隔值)文件。Apache POI是Java中一个流行的库,它主要用于处理Microsoft Office格式的文件,如Excel。在这个场景中,我们将探讨如何使用POI来...
大量数据库导出csv,一般的通过PLSQL导出csv文件,但对于数据量较大时,则需要通过数据库内部去调用存储过程去导出,这样效率会高出很多