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页。
fastadmin 导出csv文件
1.浏览器点击导出按钮,直接下载到本地,服务器不生成临时文件; 2.生成csv,中文无乱码,数据不会科学计数法; 3.支持大数据下载; 4.后台服务java语言实现,前端不限制; 5.前端代码: [removed]void(0)" class=...
1-Gbase导出csv文件教程
使用io流写如文件导出csv文件,使用jsp实现。简单的方法可以推广!
java实现后端数据导出成csv文件并上传到指定的sftp服务器,主要是使用univocity-parsers来做的csv文件导出以及采用jsch来完成csv文件的sftp上传。
1.将数据导成.csv格式,并压缩成.zip格式后,显示下载提示(含保存文件路径) 2.前后台代码都有哦
包含数据库资源 测试需要手动修改TP数据库配置
一段简单的导出CSV文件格式的代码 希望对大家有用
这是一个php导出csv文件无乱码示例,如果你的数据源编码不是gb2312的,可能需要服务器支持iconv函数转换编码.
csv.js导出csv格式文件 CSV.js 是一个简单,超快的用于 CSV 解析和编码的 JavaScript 工具库,兼容浏览器,AMD 和 NodeJS 环境。
sqlserver数据库用,指定查询语句执行后导出指定路径下生成csv文件
详细说明、注释、源码、超级经典 详细说明、注释、源码、超级经典
在ruby中用fastercsv导出csv文件。 给出了主要文件,如有疑问请查google。
大量数据库导出csv,一般的通过PLSQL导出csv文件,但对于数据量较大时,则需要通过数据库内部去调用存储过程去导出,这样效率会高出很多
flex导出csv文件。可以实现flex表格里面的内容导成csv文件
亲测OK,可直接导出excel文件,csv文件;不用指定下载路劲,直接下载到本地,服务器不用生成临时文件。
通过条件查询hbase数据导出csv,文本,html等文件,实现方式:将hbase关联hive,然后将hive数据导入真实表,在将真实表数据导入sql数据库
java使用jdbc将数据库数据导出到csv文件
TIA博途wincc如何将变量归档记录导出为.CSV文件进行查看?