大家好,我希望我没有重复任何问题
这是我的问题。opencsv 的 gradle 依赖项是什么?当我尝试同步 opencsv 的 gradle 时,出现错误无法下载 commons-lang3.jar 及其许多其他库
我有两个 csv 源可供读取数据。这两个 csv 文件提供相同的数据,但名称或列位置不同。有没有办法用“OR”添加@CsvBindByName。例如两个文件的头如下
CSV 1 - 学号、学生姓名、班级、年龄、主要语言、项目名称
CSV 2 - 姓名、班级、PrimLang、入学编号、年龄、项目、出勤百分比
我必须读取同一个 POJO 中的两个 csv 文件信息。
public class StudentInfo{
@CsvBindByName(column = "RollNo")
private String rollNo;
@CsvBindByName(column = "StudentName")
private String studentName;
@CsvBindByName(column = "PrimaryLanguage")
private String primaryLanguage;
@CsvBindByName(column = "Class")
private String class;
@CsvBindByName(column = "ProjectName")
private String projectName;
@CsvBindByName(column = "Age")
private String age;
//getters and setters
}
Run Code Online (Sandbox Code Playgroud)
或者有其他方法可以实现这一目标。如果我只采用一种 csv 标头格式,我的代码工作正常。谢谢
如果我有一个非原始公共成员的类,并且我想用OpenCSV从CSV文件中填充它们,我该怎么做?我注意到OpenCSV有一些与PropertyDescriptors相关的受保护成员
因此,假设我有一个具有地址成员的Person类,我的CSV文件包含每个人的详细信息,包括他们的地址.
Person{
private String name;
private Address al
public void setAddress(Address a){..}
public void setName(String name){..}
}
Addess{
private String line1;
private String line2;
private String postCode;
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
CSV文件:
NAME | ADDR1 | ADDR2 | PCODE ...
John Smith |Some place | Some town | NW234
Run Code Online (Sandbox Code Playgroud)
谢谢,
如何使用openCSV获取和显示csv的某些行.我目前有以下代码:
CSVReader reader1 = new CSVReader(new FileReader(mydata_csv.getpath()));
List myDatas = reader1.readAll();
Run Code Online (Sandbox Code Playgroud)
如何显示一个特定的行?
也许我可以使用更好的方式来存储我的数据(csv包含数百个变量的行).任何建议都会受到欢迎.
我正在制作一个用于将CSV文件类型转换为XML文件类型的Java程序,我需要导入“ open CSV”,但是当我编写“ import au.com.bytecode.opencsv.CSVReader;”时,用红色加下划线,然后出现错误,告诉我“包au.com.bytecode.opencsv.CSVReader不存在”,我下载了“ open csv-3.3”,并使用netbeans将其添加到库中,但是没有任何变化,顺便说一句,发生了同样的错误使用“ au.com.thoughtworks.xstream.XStream;” ,有些问题几乎与我的相似,但是我没有找到合适的解决方案,因此,如果有人有解决方案以及如何将其应用于代码的方法,那将是不错的……这是我代码中的几行...
package fr.megiste.test;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import au.com.bytecode.opencsv.CSVReader;
import au.com.thoughtworks.xstream.XStream;
public class CsvToxml2 {
public static void main(String[] args) {
String startFile = "start.csv";
String outFile = "out.xml";
try {
CSVReader reader = new CSVReader(new FileReader(startFile));
String[] line = null;
String[] header = reader.readNext();
List out = new ArrayList();
while((line = reader.readNext())!=null){
List<String[]> item = new ArrayList<String[]>();
for (int i = 0; i < header.length; i++) { …Run Code Online (Sandbox Code Playgroud) 我被迫用JDK 6构建JAR文件,因为它将用在公司的便携式计算机上,并且便携式计算机的所有者如果不经过IT人员的便携式计算机就无法更新其Java版本。
因此,如何解决此方法的try-with-resources错误:
public static String importFile(String filepath){
String insertQuery = "INSERT INTO SALESMAN VALUES (?,?)";
String status;
try (CSVReader reader = new CSVReader(new FileReader(filepath), ','); //error here
Connection connection = DBConnection.getConnection();){
Statement stmt = connection.createStatement();
PreparedStatement pstmt = connection.prepareStatement(insertQuery);
String[] rowData = null;
int i = 0;
while((rowData = reader.readNext()) != null){
for (String data : rowData){
pstmt.setString((i % 2) + 1, data);
if (++i % 2 == 0)
pstmt.addBatch();
if (i % 20 == 0)
pstmt.executeBatch();
}
} …Run Code Online (Sandbox Code Playgroud) 我有大量需要写入 CSV 文件的 bean。我正在尝试使用 OpenCSV,但我在网上看到的所有示例都要求我将我拥有的 bean (POJO) 转换为字符串数组。我不想这样做,因为这意味着我将不得不通过数百万个 bean 并将这些 bean 中的每一个转换为 String[],这将是一个非常耗费内存的过程。
这是我现在用于执行此操作的一段代码:
private static void writeRowsToCsv(Path filePath, List<MyBean> rows)
throws IOException {
StringWriter writer = new StringWriter();
CSVWriter csvWriter = new CSVWriter(writer, '#', '\'');
ColumnPositionMappingStrategy mappingStrategy =
new ColumnPositionMappingStrategy();
mappingStrategy.setType(MyBean.class);
List<String[]> rowsInStringArray = convertBeanToStringArray(rows)
csvWriter.writeAll(rowsInStringArray);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以避免转换为String[]并使用必须写入 CSV 文件的 bean 列表?
我正在使用openCSV的CsvToBean类。豆有日期字段。
@CsvDate(value = "yyyy-MM-dd")
@CsvBindByPosition(position = 8)
private Date startDate;
Run Code Online (Sandbox Code Playgroud)
我正在通过传递值“ 2018-25-02 ” 进行负面测试,但它将转换为格林尼治标准时间2020年1月2日星期四00:00:00而不引发任何问题。
我正在使用OpenCSV创建充满数据库记录的 CSV 文件。我正在使用这个:
CSVWriter writer = new CSVWriter(
new OutputStreamWriter(new FileOutputStream("example.csv"),
StandardCharsets.UTF_8), ';');
Run Code Online (Sandbox Code Playgroud)
问题是,这个构造函数是@Deprecated.
该库有多个构造函数,但只有一个未被弃用。我正在使用这个构造函数:
/** @deprecated */
@Deprecated
public CSVWriter(Writer writer, char separator) {
this(writer, separator, '"');
}
Run Code Online (Sandbox Code Playgroud)
虽然我应该使用这个:
public CSVWriter(Writer writer, char separator, char quotechar, char escapechar, String lineEnd) {
super(writer, lineEnd);
this.escapechar = escapechar;
this.quotechar = quotechar;
this.separator = separator;
}
Run Code Online (Sandbox Code Playgroud)
但是我不确定要在那里放什么,因为我不希望我的文件最终有所不同。
我正在阅读一个 CSV 文件,使用com.opencsv.CSVReader如下所示
String[] headers = csvReader.readNext();
Run Code Online (Sandbox Code Playgroud)
标头的值如下屏幕截图所示:
这里的编码器是什么(以黄色突出显示)?
为什么第一个索引的值为 1,所有其他索引的值为 0?