java 解析csv从18行开始 传入一个File 和一个行数 使用opencsv 返回一个measbean 使用@@CsvBindByPosition(position = 3) @CsvBindByName(column = "ULD-CST")
时间: 2024-03-02 11:53:34 浏览: 242
好的,您可以使用opencsv库来解析csv文件,并将每一行数据封装成一个实体类,其中使用@CsvBindByPosition注解和@CsvBindByName注解来指定每个属性对应的csv文件中的列位置或列名,并且从指定行开始读取数据。以下是一个示例代码:
假设我们有一个实体类MeasBean,包含三个属性:name、age、gender:
```java
import com.opencsv.bean.CsvBindByName;
import com.opencsv.bean.CsvBindByPosition;
public class MeasBean {
@CsvBindByPosition(position = 0)
@CsvBindByName(column = "Name")
private String name;
@CsvBindByPosition(position = 1)
@CsvBindByName(column = "Age")
private int age;
@CsvBindByPosition(position = 3)
@CsvBindByName(column = "ULD-CST")
private String gender;
// getter and setter methods
}
```
然后我们可以根据上述代码示例进行修改:
```java
import com.opencsv.bean.CsvToBeanBuilder;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
public class CSVParser {
public static void main(String[] args) throws IOException {
File file = new File("your_file_path.csv");
int startRow = 18;
List<MeasBean> measBeanList = new CsvToBeanBuilder(new FileReader(file))
.withType(MeasBean.class)
.withSkipLines(startRow - 1)
.build()
.parse();
// 处理完数据后,可以对measBeanList进行进一步操作
}
}
```
在上述代码中,我们首先指定了要解析的csv文件路径和起始行数。然后,我们使用CsvToBeanBuilder类来读取文件,并使用withType方法指定实体类的类型。在实体类中,我们使用@CsvBindByPosition注解和@CsvBindByName注解来指定每个属性对应的csv文件中的列位置或列名。请注意,我们在CsvToBeanBuilder类中使用withSkipLines方法来跳过指定行数之前的行数。
希望这可以帮助您解决问题!
阅读全文