/**
*
* 生成CSV文件:第一行是文件标题,第二行是字段名称,第三行开始是具体的业务数据 <br>
* 〈功能详细描述〉
*
* @param fileName:文件名
* @param title:文件标题
* @param cloumnNames:字段名数组
* @param keys:字段Key数组
* @param dataList:数据列表
* @param response
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static void downLoadCsv(String fileName, String title, String[] cloumnNames, String[] keys,
List<Map<String, Object>> dataList, HttpServletResponse response) {
response.reset();
PrintWriter out = null;
try {
response.setContentType("application/octet-stream;charset=GB2312");
response.setHeader("Content-disposition", "attachment; filename="
+ new String(fileName.getBytes("GBK"), "ISO-8859-1") + ".csv");
out = response.getWriter();
// 如果存在标题,则写入标题
if (!StringUtil.isEmpty(title)) {
out.write(title + "\r\n");
}
// 如果存在抬头字段,则写入抬头字段
if (null != cloumnNames && cloumnNames.length > 0) {
StringBuilder cloumns = new StringBuilder(100);
for (String headStr : cloumnNames) {
cloumns.append(headStr).append(",");
}
cloumns.deleteCharAt(cloumns.length() - 1);
cloumns.append("\r\n");
out.write(cloumns.toString());
}
// 添加业务数据
if (null != keys && keys.length > 0 && null != dataList && !dataList.isEmpty()) {
// 遍历业务数据List
for (Map<String, Object> dataMap : dataList) {
StringBuilder line = new StringBuilder(100);
// 遍历业务数据Map的value
for (String key : keys) {
// 处理字段值,使其符合CSV格式
String value = processCsvValue(MapUtils.getString(dataMap, key, ""));
// 将value值添加至输出字符序列
line.append(value).append(",");
}
line.deleteCharAt(line.length() - 1);
line.append("\r\n");
out.write(line.toString());
}
}
} catch (IOException e) {
logger.error("下载异常" + e.getMessage());
} finally {
IOUtils.closeQuietly(out);
}
}
public static String processCsvValue(String s) {
if (StringUtils.isBlank(s)) {
return "";
}
String value = s.trim();
// 包含有逗号、双引号、空格、换行符、回车符、空字符则将此字段用双引号引起来,
if (value.indexOf('"') > -1 || value.indexOf(",") > -1 || value.indexOf("\n") > -1 || value.indexOf('\r') > -1) {
StringBuffer csvValue = new StringBuffer();
return csvValue.append('"').append(value).append('"').toString();
} else {
if (isAppendTabToStr(value)) {
return value + "\t";
}
return value;
}
}
/**
*
* 是否在字符串的后面追加TAB符(对于超过16位的数字和以0开始的数字在用Excel打开时格式会发生错乱,因此在其末尾追加TAB) <br>
* 〈功能详细描述〉
*
* @param value
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
private static boolean isAppendTabToStr(String value) {
if (value.matches("^[0-9\\.]{16,}$")) {
return true;
}
if (value.matches("^[0-9\\.]{1,}$") && value.startsWith("0")) {
return true;
}
return false;
}
分享到:
相关推荐
假设你有两个CSV文件`file1.csv`和`file2.csv`,且它们有公共的列`common_column`,你可以进行连接操作: ```bash csvsql -i sqlite --join common_column file1.csv file2.csv "SELECT * FROM file1 JOIN file2 ON...
dbc2csv的主要思想是通过以易于处理的格式(例如csv生成数据来促进与公共卫生数据相关的搜索。 注意: 有问题的dbc文件是 SUS 信息学部 (DATASUS) 的专有格式,与 Microsoft FoxPro 或同名 CANdb 格式无关。 如何...
session自动关联支持多session之间切换多变量环境,可设置变量,全局变量及环境变量支持多套配置文件之间切换Yaml文件可关联Csv文件,Yaml文件存放公共测试数据,Csv文件存放测试数据yaml及Csv文件中均可使用变量、...
使用生成的目录安装PartialCsvParser 是一个在公共领域分发的单头库。 只需将PartialCsvParser.hpp复制到包含路径中并包含它。 您还git add将头文件git add到您的存储库中,甚至可以对其进行修改。 如果您做出一些...
JavaBean是符合一定规范的Java类,主要特点是:公开的构造函数、公共属性和getter/setter方法。它们通常用于封装业务逻辑中的数据模型,使得数据能够以面向对象的方式被操作和传递。 接着,我们来看看如何利用反射...
这些类通常包含公共属性,属性名与CSV文件的列名对应。这样做的好处是提高了代码的可维护性和可读性。 3. **附加属性**:为了增强实体类的功能,可以添加一些附加属性,例如`[NotMapped]`用于指示该属性不应在...
对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终,经过NMS筛选后获得检测到...
在安装和使用西门子宏时,你需要将压缩包中的文件解压到指定的位置,即"C:\用户\公共\eplan\data"目录下。这个路径是EPLAN默认的数据存储位置,宏文件放在这里可以被EPLAN软件识别和调用。请确保在操作前关闭EPLAN...
在生成CSV的过程中,开发者通常会首先定义一个C#类,该类代表数据模型,然后利用反射遍历类的所有属性,将它们的值转化为适合CSV格式的字符串。这个过程可能涉及到数据类型的转换,例如日期、数字或枚举值,确保它们...
CSV文件格式是一种常见的数据存储方式,尤其适用于需要进行数据分析或导入其他应用程序的情况。以下是这个项目涉及的一些关键知识点: 1. **API(Application Programming Interface)调用**: API允许不同应用...
Garmin数据库 脚本,用于将运行状况数据解析为 DB并在其中处理数据。... 将数据保留为JSON文件或FIT文件,这样就可以重新生成数据库,而无需从Garmin Connect连接或重新下载数据。 将活动导出为TCX文件。 将数据
本篇文章将深入探讨如何在C++中设计一个跨平台的CSV文件解析类,以满足在Linux和Windows上对CSV文件的操作需求。 首先,我们需要理解CSV文件的基本结构。CSV文件由一系列记录组成,每个记录由一个或多个字段构成,...
用于获取或设置Web.config/*.exe.config中节点数据的辅助类(AppConfig.cs)CSV文件和DataTable对象转换辅助类(CSVHelper.cs)DatabaseInfo 的摘要说明。(DatabaseInfo.cs)常用的目录操作辅助类(DirectoryUtil.cs) ...
文件生成是直报系统中的重要环节,可能涉及到PDF、Excel或CSV等多种格式。Java的Apache POI库用于处理Microsoft Office文档,如生成Excel报表;iText或PDFBox库则可用来创建PDF文件,这两种格式都适合打印和长期保存...
这些数据通常是以二进制或文本格式保存,例如C语言数组、CSV文件或其他定制格式,以便在目标系统中直接加载和使用。生成的字库文件包含了所有预定义字符(ASCII码或者更广泛的Unicode字符集)的点阵数据。 在描述中...
8. **Commons CSV**: 用于处理CSV(逗号分隔值)文件,提供解析和生成CSV格式的功能。 9. **Commons HttpClient**:(已废弃,推荐使用Apache HTTP Components)提供HTTP客户端接口,支持HTTP/1.1协议,包括连接管理...
此外,这些数据可能还包括其他相关信息,如区县的人口、面积、经济指标等,这些属性可以通过与shp文件关联的DBF(数据库文件)或者CSV等格式的数据文件获取。通过GIS软件,用户可以对这些数据进行叠加分析,以揭示...
复制一个 csv 文件 点击,生成表格 复制你的新表 例子 布宜诺斯艾利斯市的自行车商店。 ATX 的说客。 乌拉圭的公共组织。 去做 样式 带有信息和许可证的页脚 分析 联系表 配置 CSV(制表符、逗号等) data-title...
在使用CSV2RDF4LOD时,用户需要提供CSV文件,并定义相应的RDFS模式。工具会根据这个模式解析CSV数据,并生成对应的RDF三元组。生成的RDF数据可以直接发布到Linked Open Data(LOD)云中,与其他开放数据集链接,形成...
8. **API接口**:封装包通常通过一组公共方法和属性提供服务,例如`ExportToExcel(DataTable data, string outputPath)`,使调用者能够简单直观地使用。 9. **并发和跨平台兼容性**:考虑到现代开发环境的多样性,...