Tag: csv

从csv生成树结构

我已经暂时解决了这个问题一段时间了。 我基本上试图从一组CSV数据生成树层次结构。 CSV数据不一定是有序的。 这类似于以下内容: Header: Record1,Record2,Value1,Value2 Row: A,XX,22,33 Row: A,XX,777,888 Row: A,YY,33,11 Row: B,XX,12,0 Row: A,YY,13,23 Row: B,YY,44,98 我试图尽可能灵活地进行分组。 最简单的分组是为Record1和Record2做的,Value1和Value2存储在Record2下,这样我们得到以下输出: Record1 Record2 Value1 Value2 这将是: A XX 22,33 777,888 YY 33,11 13,23 B XX 12,0 YY 44,98 我目前正将我的群组设置存储在列表中 – 我不知道这是否会妨碍我的想法。 此列表包含组的层次结构,例如: Record1 (SchemaGroup) .column = Record1 .columns = null .childGroups = Record2 (SchemaGroup) .column = […]

带有字符串分隔符的Java CSV解析器(多字符)

是否有任何Java开源库支持CSV的多字符 (即长度> 1的字符串)分隔符(分隔符)? 根据定义,CSV =逗号分隔值数据,单个字符(’,’)作为分隔符。 但是,存在许多其他单字符替代方案(例如,制表符),使CSV代表“字符分隔值”数据(本质上,DSV:分隔符分隔值数据)。 用于CSV的主Java开源库(例如, OpenCSV )几乎支持任何字符作为分隔符,但不支持字符串(多字符)分隔符。 所以,对于用“|||”这样的字符串分隔的数据 除了预处理输入以便将字符串转换为单字符分隔符之外,没有其他选择。 从那时起,数据可以解析为单字符分隔值。 因此,如果有一个本地支持字符串分隔符的库,那将是很好的,因此不需要预处理。 这意味着CSV现在标准为“CharSequence-Separated Values”数据。 🙂

使用Java在浏览器中下载CSV文件

我正在尝试在Web应用程序上添加一个按钮,当单击该按钮时,会下载一个CSV文件(很小,只有大约4KB)。 我已经制作了按钮并且附加了一个监听器。 该文件也准备好了。 我现在唯一需要做的就是创建在单击按钮时下载csv文件的实际事件。 假设“file”(类型为File)是我正在使用的csv文件的名称,并且它已准备就绪,这是我到目前为止的方法: public void downloadCSV(HttpServletRequest _request, HttpServletResponse _response, LogFileDetailCommand cmd) throws Exception { ServletOutputStream outStream = _response.getOutputStream(); _response.setContentType(“text/csv”); _response.setHeader(“Content-Disposition”, “attachment; filename=data.csv”); } 我意识到我错过了将文件写入ServletOutputStream的部分,但这是我坚持的部分。 我知道类ServletOutputStream扩展了类OutputStream( http://docs.oracle.com/javaee/5/api/javax/servlet/ServletOutputStream.html ),因此它inheritance了它的“写”方法,所以在一个理想的世界里我想简单地说“outStream.write(file);”,但我不能这样看,因为这些“写”方法只有byte,byte []和int作为参数,并且不可能将文件传递给它们。 我该怎么做才能将文件传递到outStream? (另请注意:我应该在“_response.setContentLength();”中添加它,如果是这样,我应该在其中放入哪些参数?) Ps我知道在我完成outStream之后我需要刷新和/或关闭它。

正则表达式在csv中找到缺少的双引号

我们正在处理包含非闭合双引号条目的行的csv文件。 这些炸毁了csv解析器,所以我试图整理一个正则表达式,它将识别这些行,以便我们可以在尝试处理它们之前从文件中删除它们。 在下面的示例中,csv解析器到达第2行并包含第3行中第一个双引号之前的所有内容,然后尝试关闭令牌然后爆炸,因为在“关闭”双引号之后有非空格字符下一个逗号。 示例第1行,一些数据,“好行”,处理得很好,很开心 示例第2行,一些数据,“坏线,处理不良,不开心 示例第3行,一些数据,“好行”,在此之前死亡,不开心 我想做的事情如下: .*,”[^(“,)]*[\r\n] 我们的想法是在行结束之前找到一行后跟“没有实例”的任何内容。 然而,序列的否定是行不通的。 怎么样这样呢? 注意: 由于人们一直建议基本上检查偶数双引号,因此值得注意的是,单个双引号csv条目可能包含独立双引号(例如……,“Measurement:1’2”“,…) 。

使用Apache POI基于csv表更新Excel工作表值

我还是java新手。 我对java语法有点问题。 我的程序应该执行以下过程: 1)它将csv文件作为输入。 2)它将excel文件作为输入。 3)它应该迭代写入日期的两个文件的第一列。 4)通过添加csv表中的信息来更新excel文件并保存其更改。 我有一个https://onedrive.live.com/?cid=24b4fceb4f4e4098&id=24B4FCEB4F4E4098%213018&authkey=%21AKKzaZsJ5pkd5NE 我有两个输入示例,结果excel表应该如何。 两个输入文件: 出口的CSV input.csv 出口Excel的input.xlsx 更新的excel文件应如下所示: 出口Excel的output.xlsx 我的Java代码: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.Reader; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class CsvToExcelConverter […]

使用map超过1个深度级别,从csv转换为json

我有一个csv文件,其内容如下: Fruit, Mango Fruit, Apple Car, Audi Apple, Red Color, Brown 我想最终以这样的格式转换它: “hierarchy” : [{ “label”: “Fruit”, “children” : [ {label: “Mango”}, {label: “Apple”, “children”: [ {label:”Red”}]} ] }, { “label” : “Car”, “children” : [ {label: “Audi”} ] }, { “label” : “Color”, “children” : [ {label: “Brown”} ] }] 为此,我在地图中插入了值: StringBuilder sb = […]

用于将Array转换为CSV的Java API

假设我有一个int,float,string等数组。是否有任何实用程序API(例如Commons,Guava)会给我一个逗号分隔的字符串? 像这样, int[] a = {1,2,3,4,5}. String s = magicAPI.getCSV(a); // s == “1,2,3,4,5”;

如何在首次运行时填充大型sqlite数据库

我正在开发一个基于SQLite数据库的字典应用程序,其中包含超过300,000行。 问题是最终forms的数据库文件由全文索引表组成,重量超过150Mb 。 我已经设法通过创建无内容的fts4表将.db文件大小降到最低。 数据库不能小一些 。 我还设法将预先填充的数据库放在应用程序中,它运行正常。 问题是我不能将最终的.db文件保存在/ assets中并在第一次运行时将其复制到sdcard,因为它太大了。 我也不想在第一次运行时下载它。 批量INSERT数据,即使对事务和sqlite进行了优化,并且启动时没有索引,因此它也不是一个选项。 好处是用于构建数据库的原始数据,以CSV格式和压缩,是30Mb和sqlite的命令行.import选项非常快(100,000行~1s)但是…它无法从没有root权限的应用。 我很乐意将应用程序与/ assets中的压缩CSV文件捆绑在一起,解压缩,在SD卡上创建数据库,然后导入CSV,但在我看来这是不可能的。 虽然有很多字典应用程序似乎正在这样做。 (下载的应用程序是十几兆字节,首次运行时构建数据库,并在SD卡上占用数百兆字节的空间)。 我该如何做到这一点? 过去两周我一直在研究这个问题,而且只是没有想法。 我是Android开发的新手,所以任何帮助都会非常感激。

使用JSF下载CSV文件

我不知道如何下载CSV文件。 CSV将在运行时生成。 我是否需要先将文件保存在tomcat WEB-INF目录中? 我正在使用JSF 1.2。 顺便说一下,这种任务最受欢迎的JSF组件是什么? 编辑(05.05.2012 – 15:53) 我尝试了BalusC在他的第一个链接中说明的解决方案,但如果我点击我的commandButton,该文件的内容将显示在网页上。 也许mimetype存在问题? XHTML文件: 主豆: public String doDataExport() { try { export.downloadFile(); } catch (SurveyException e) { hasErrors = true; } return “”; } 出口豆类: public void downloadFile() throws SurveyException { try { String filename = “analysis.csv”; FacesContext fc = FacesContext.getCurrentInstance(); HttpServletResponse response = (HttpServletResponse) fc.getExternalContext().getResponse(); […]

在Java中读取CSV文件时跳过第一行

嘿家伙我正在编写解析器代码来读取.csv文件并将其解析为XML。 这是我的代码,它工作正常,但我希望它跳过文件中的第一行。 所以我决定设置一个HashMap,但它似乎确实有效: for (int i = 0; i < listOfFiles.length; i++) { File file = listOfFiles[i]; if (file.isFile() && file.getName().endsWith(".csv")){ System.out.println("File Found: " + file.getName());//Prints the name of the csv file found String filePath = sourcepath + "\\" + file.getName(); BufferedReader br = new BufferedReader(new FileReader(file)); String line; int n = 1; Map lineMap […]