标签: opencsv

OpenCSV日期解析

我们使用OpenCSV来解析CSV文件,并使用CsvToBean类将其值直接绑定到模型对象(OpenJPA实体bean).

然而,问题是 - 在CSV中有一些值(显然)被解析为Strings,但应该在Date属性中设置,所以基本上CsvToBean类在尝试动态调用写入方法时死亡(即,它尝试设置Date属性) with raw String value).

OpenCSV中是否有任何工具允许我指定每列应映射到哪种类型?如果没有,你有什么建议可以扩展/重新实现以便于此吗?在/test/au/com/bytecode/opencsv/bean/目录下检查OpenCSV源代码分发中的其他可用strageties 让我没有接近结论.

我想我可以摆弄Date属性setter并使它成为一个泛型方法,它将类型作为参数传递,并尝试解析传递的值,Date如果它还没有Date,但....我们正在使用持久性注释实体,我不希望稍后看到这个"setter-hack"向我们开枪,因为OpenJPA Enhancer突然不喜欢通用的二传手.

我一直在抨击这个问题几个小时 - 我可能通过使用反射和编写我自己的bean绑定逻辑解决了这个问题,但是我不喜欢重新发明轮子并且有一种感觉/希望这可能在现有的OpenCSV框架内轻松完成.

如果需要,我可以发布一些代码,但真的没什么可看的.

有什么想法吗?谢谢.

java opencsv

6
推荐指数
1
解决办法
6590
查看次数

使用OpenCSV将CSV解析为多个/嵌套bean类型?

我有各种CSV,包含一些标准列和一些完全随机的字段:

firstname, lastname, dog_name, fav_hat, fav_color
bill,smith,fido,porkpie,blue
james,smith,rover,bowler,purple


firstname, lastname, car_type, floor_number
tom, collins, ford, 14
jim, jones, toyota, 120
Run Code Online (Sandbox Code Playgroud)

所以我试图将它们解析为Person.class bean,它包含firstname和lastname,然后我有一个名为PersonAttribute.class的第二个类来保存......还有其他什么.

这两个类的讽刺大纲:

class Person {
 public String firstname;
 public String lastname;
 public List<PersonAttribute> attribs;
}

class PersonAttribute {
 public Person p;
 public String key; // header name, ex. 'car_type'
 public String value; // column value, ex. 'ford'
}
Run Code Online (Sandbox Code Playgroud)

我一直在opencsv中使用CsvToBean函数:

public static List<Person> parseToBeans(File csvFile, HashMap<String, String> mapStrategy, Class beanClass) throws IOException {
    CSVReader reader = null;
    try {
        reader …
Run Code Online (Sandbox Code Playgroud)

java opencsv supercsv

6
推荐指数
1
解决办法
8370
查看次数

使用opencsv将CSV写入String,而不创建实际文件或临时文件

我正在尝试使用opencsv库来编写csv文件.限制是我不想在磁盘上创建文件甚至是临时文件.有没有办法实现它?

从我看来,CSVWriter的构造函数需要一个FileWriter对象.

谢谢!

java file opencsv

6
推荐指数
2
解决办法
5872
查看次数

从目录中读取*.csv文件并显示每个文件的内容失败

我需要帮助阅读文件夹和打开/输出csv数据,我已经使用了其他人写的例子,但没有一个对我有用.

我目前拥有的是这个,但它不输出文件:

$files = scandir($PathToCreate.$version."/"); //scan the folder
foreach($files as $file) { //for each file in the folder

//The following is another example I found but does not output anything I just need to open each file and be able to output / target specific data

$csv = array();
$lines = file($file, FILE_IGNORE_NEW_LINES);

foreach ($lines as $key => $value)
{
    $csv[$key] = str_getcsv($value);
} 
print_r($csv)

}
Run Code Online (Sandbox Code Playgroud)

php csv scandir fgetcsv opencsv

6
推荐指数
1
解决办法
6728
查看次数

找不到ColdFusion/Java类异常

我试图用Coldfusion和JavaLibrary解析CSV文件.我找到了一些例子,但似乎ColdFusion找不到Jar-File.

这是我的代码:

<cfset t01= getTickCount()>
    <cfscript>
        fileReader = createobject("java","java.io.FileReader");
        fileReader.init("C:\Dev\files.csv");
        csvReader = createObject("java","au.com.bytecode.opencsv.CSVReader");
        csvReader.init(fileReader, ",");
    </cfscript>

<cfset t02= getTickCount()>
<cfset ArrayData = csvReader.readAll()>
<cfset t03= getTickCount()>

<cfoutput>
    Process Data: #t02 - t01# ms
    Display Dump: #t03 - t02# ms
    <cfdump var="ArrayData"><cfabort />
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

这是ErrorMessage:

java.lang.ClassNotFoundException: au.com.bytecode.opencsv.CSVReader
    at coldfusion.bootstrap.BootstrapClassLoader.loadClass(BootstrapClassLoader.java:235)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248).....more Stack blabla......
Run Code Online (Sandbox Code Playgroud)

我正在使用opencsv库.Jar文件位于以下文件夹中:

wwwroot的/ WEB-INF/lib中

我也多次重启服务器.

谢谢你的帮助!

java coldfusion classnotfoundexception opencsv

6
推荐指数
1
解决办法
1129
查看次数

将CSV Serde与Hive create table一起使用可将所有字段类型转换为字符串

如果我创建表并指定CSVSerde,则所有字段都将转换为字符串类型.

hive> create table foo(a int, b double, c string) row format serde 'com.bizo.hive.serde.csv.CSVSerde' stored as textfile; OK Time taken: 0.22 seconds hive> describe foo; OK a string from deserializer b string from deserializer c string from deserializer Time taken: 0.063 seconds, Fetched: 3 row(s) Serde来自https://github.com/ogrodnek/csv-serde

如果我从这个页面https://cwiki.apache.org/confluence/display/Hive/CSV+Serde尝试serde'org.apache.hadoop.hive.serde2.OpenCSVSerde',我看到了同样的事情.所有字段都将更改为字符串类型.

Hive版本1.2.1 Hadoop版本2.7.0 java版本"1.7.0_80"

csv hadoop hive opencsv hiveql

6
推荐指数
1
解决办法
4794
查看次数

java.lang.NoClassDefFoundError:org / apache / commons / lang3 / ObjectUtils

我正在尝试编写程序来读取CSV文件,然后用它做一些东西。我进行了很多搜索,终于找到了这个库。

几天前,我完成了代码,一切正常。今天,我将该库更新为4.0 v,然后弹出了很多警告。

我进行了一些测试,但失败的部分是:

public void LeerCSV(File CSVCat, File CSVProd){  
//Creo un objeto de la clase FileReader que me hace falta para los CSVReader
CSVReaderBuilder lectorCatBuilder = null;
CSVReaderBuilder lectorProdBuilder = null;

CSVReader CatReader = null;
CSVReader ProdReader = null;

CSVParser CatParser = null;
CSVParser ProdParser = null;
        //Vamos a intentar abrirlos y operar con ellos 

try {
    //Se crea una especie de "constructor" para crear los lectores de archivos.
    //para ello, antes se le pasan todos los …
Run Code Online (Sandbox Code Playgroud)

java csv noclassdeffounderror opencsv

6
推荐指数
1
解决办法
9256
查看次数

为什么在Hive中使用OpenCSVSerde时所有列都创建为字符串?

我正在尝试使用OpenCSVSerde以及一些整数和日期列创建一个表。但是列将转换为String。这是预期的结果吗?解决方法是,在此步骤之后进行显式类型转换(这会使完整的运行变慢)

hive> create external table if not exists response(response_id int,lead_id int,creat_date date ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ('quoteChar' = '"', 'separatorChar' = '\,', 'serialization.encoding'='UTF-8', 'escapeChar' = '~')   location '/prod/hive/db/response' TBLPROPERTIES ("serialization.null.format"="");
OK
Time taken: 0.396 seconds
hive> describe formatted response;
OK
# col_name              data_type               comment

response_id             string                  from deserializer
lead_id                 string                  from deserializer
creat_date              string                  from deserializer
Run Code Online (Sandbox Code Playgroud)

解释将数据类型更改为字符串的源代码

hadoop hive create-table opencsv hive-serde

6
推荐指数
1
解决办法
1793
查看次数

Opencsv,StatefulBeanToCsv 将嵌套的对象列表写入 csv

我必须使用打开的 csv 将嵌套的对象列表(StoreLocations)写入 Csv 文件。我的模型类是-

public class StoreLocation {
    private String name;
    private String city;
    private int zip;
    private String streetAndNumber;
    private List<String> keywords;
    private Double lat;
    private Double lng;
    private List<OpeningHours> openingHours;
}

public class OpeningHours {
    private String dayOfWeek;
    private String from1;
    private String to1;
}
Run Code Online (Sandbox Code Playgroud)

我的写作方法——

public void getStoreLocationData(List<StoreLocation> storeLocations) throws IOException, CsvDataTypeMismatchException, CsvRequiredFieldEmptyException {
        try (
                Writer writer = Files.newBufferedWriter(Paths.get(storeLocationDataCsv))
        ) {
            StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer)
                    .withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
                    .build();
            beanToCsv.write(storeLocations);
        }
    }
Run Code Online (Sandbox Code Playgroud)

此代码完美生成所有列,除了开放时间列表。这是当前的输出-在此处输入图片说明 我宁愿有一个开放时间列,并将每个开放时间安排为一个新行。就像是在此处输入图片说明 或在营业时间列内的 json …

java csv list opencsv writetofile

6
推荐指数
1
解决办法
1833
查看次数

Android更新后opencsv不读取CSV

在我的手机昨晚更新之前,我的代码运行良好。我正在使用 opencsv 将手机存储中的 CSV 文件读取到我的应用程序中的数组中。这是代码...

    public static String[] getFileContents(File file) {
    String[] contentsArray = new String[500];
    if(file.exists()) {
        try {
            CSVReader reader = new CSVReader(new FileReader(file));
            String[] nextLine;
            while ((nextLine = reader.readNext()) != null) {
                System.arraycopy(nextLine, 0, contentsArray, 0, nextLine.length);
            }
        } catch (Exception e) {
            System.out.println("Failed file: " + file);
            System.out.println("You are here and sad but at least the file exists");
            e.printStackTrace();
        }
    } else {
        System.out.println("File does not exist");
    }

    return contentsArray;
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误...

I/System.out: Failed file: /storage/emulated/0/Documents/text/36-12644-Test …
Run Code Online (Sandbox Code Playgroud)

java android opencsv

6
推荐指数
1
解决办法
171
查看次数