/**
*
* 生成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;
}
分享到:
相关推荐
session自动关联支持多session之间切换多变量环境,可设置变量,全局变量及环境变量支持多套配置文件之间切换Yaml文件可关联Csv文件,Yaml文件存放公共测试数据,Csv文件存放测试数据yaml及Csv文件中均可使用变量、...
使用生成的目录安装PartialCsvParser 是一个在公共领域分发的单头库。 只需将PartialCsvParser.hpp复制到包含路径中并包含它。 您还git add将头文件git add到您的存储库中,甚至可以对其进行修改。 如果您做出一些...
dbc2csv的主要思想是通过以易于处理的格式(例如csv生成数据来促进与公共卫生数据相关的搜索。 注意: 有问题的dbc文件是 SUS 信息学部 (DATASUS) 的专有格式,与 Microsoft FoxPro 或同名 CANdb 格式无关。 如何...
Garmin数据库 脚本,用于将运行状况数据解析为 DB并在其中处理数据。... 将数据保留为JSON文件或FIT文件,这样就可以重新生成数据库,而无需从Garmin Connect连接或重新下载数据。 将活动导出为TCX文件。 将数据
用于获取或设置Web.config/*.exe.config中节点数据的辅助类(AppConfig.cs)CSV文件和DataTable对象转换辅助类(CSVHelper.cs)DatabaseInfo 的摘要说明。(DatabaseInfo.cs)常用的目录操作辅助类(DirectoryUtil.cs) ...
复制一个 csv 文件 点击,生成表格 复制你的新表 例子 布宜诺斯艾利斯市的自行车商店。 ATX 的说客。 乌拉圭的公共组织。 去做 样式 带有信息和许可证的页脚 分析 联系表 配置 CSV(制表符、逗号等) data-title...
Matlab中计算器x的代码砂锅库 通用库每年都用于 ...文件并生成 matlab 样式的图。 需要在本地安装 Matlab 或 GNU Octave。 对于大的 .csv 文件可能会有点慢,但作为数据分析的参考保留下来。 数据查看
RetrieveBulkAPIResults 这个 Java 程序的目标是从数据加载器生成的日志文件中提取作业 ID 以及附加参数,并生成成功和错误的 CSV 文件。 它使用以下库: Force.com WSC Apache Commons CLI Apache 公共日志记录日志...
用法: Rubygenerate.rb> City_of_Austin_Public_Art_Collection.osm地位该脚本生成一个数据文件,该文件将无错误加载到JOSM应用程序中。 尚不清楚这是否足以完成数据导入,但它确实可以成功处理城市数据集中的内容...
数据库/CSV 文件源。工作正在进行中web-charts 不完整,正在开发中。执照网络图表软件根据 GNU 通用公共许可证,版本 3,2007 年 6 月 29 日发布。网络图表软件中包含的文档(例如 /doc/)根据 GNU 自由文档许可证...
我们的公共恶意软件数据集是由 Cuckoo Sandbox 基于 Windows 操作系统 API 生成的,可调用网络安全研究人员的分析,以用于机器学习应用程序的 csv 文件格式的恶意软件分析。 ## 出版物 **Mal-API-2019** 数据集的...
CSV文件导入DataTable和DataTable导出到Csv文件等操作 4.DEncrypt 加密/解密帮助类 DEncrypt C#DEncrypt加密/DEncrypt解密帮助类 ,多种方式,可以设置Key DESEncrypt C#DESEncrypt加密/DESEncrypt解密帮助类 ...
COVID-19大流行性脆弱性指数(PVI)仪表板这是的公共存储库。快速入门指南指南概述了... 可以使用操纵数据文件以生成新的结果文件,以上仪表板。 数据文件命名为: <model>_data_<date>.csv 。方法统计方法的详细信息
运行php get.php以从data.gouv.fr检索CSV文件。 CSV数据文件将存储在缓存文件夹中; 运行rm cache/*.csv清除它,然后再次运行get获取新数据。 运行yarn install或npm install来检索前端所需的模块(c3图形,tiny...
脚本的使用非常简单,在运行npm install之后, npm install使用以下命令: bunzip2 -kc /data/RC_2015-05.bz2 |node index.js 它将在当前目录中生成count.txt文件,并在计数器更新时定期对其进行更新。 在没有SSD...
该reporting.py脚本会从JSON输出all_groups.py并生成CSV文件,允许快速识别敏感的私人或公共团体。 安装 要求: 下载资料库 安装要求 pip install -r requirements.txt 用法 您将在租户上需要一个有效的帐户。 ...
该程序可以将SonarQube服务器中的代码分析导出为docx,xlsx,csv,markdown和文本文件。 该程序是免费软件; 您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它; 许可的版本3,或...
该库针对性能和较小的内存占用进行了优化,可以完全在内存中运行,而无需生成临时文件或需要额外的编译步骤。 Pentaho Reporting 在设计报告时为用户提供了极大的灵活性。 该软件是根据 GNU 宽松通用公共许可证 ...
BlobHunter会生成内容丰富的csv结果文件,其中包含有关扫描环境中每个公共打开的容器的重要详细信息。 要求 Python 3.5+ Azure CLI 软件包 具有以下之一的Azure用户: 或具有允许执行以下Azure操作的角色的任何...
数据交换通过一组常见的CSV文件(根据以前的数据库设计建模)进行。模块可以另外使用如下所述要管理的私有数据。通用数据将全部以CSV格式存储;建议在合理范围内,私有数据也应采用CSV格式;常见文件之一将是...