官網:http://opencsv.sourceforge.net/
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.4</version>
</dependency>
import com.opencsv.bean.CsvBindByPosition;
import com.opencsv.bean.CsvCustomBindByPosition;
import com.opencsv.bean.customconverter.ConvertGermanToBoolean;
import io.searchbox.annotations.JestId;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Accessors(chain = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SiteData implements Serializable {
@JestId
private String id;//唯一標誌
@CsvBindByPosition(position = 0)
private String name;
@CsvBindByPosition(position = 1)
private String startTime;//開始時間
@CsvBindByPosition(position = 2)
private String endTime;//結束時間
@CsvBindAndSplitByPosition(position = 3,elementType = String.class, splitOn = "、")
private List<String> province;
@CsvBindByPosition(position = 4)
private String level;
@CsvBindByPosition(position = 5)
private String area;
@CsvCustomBindByPosition(position = 6 ,converter = ConvertGermanToBoolean.class)
private Boolean tripped;
@CsvBindByPosition(position = 7)
private String description;
}
@CsvBindByPosition(position = 1)
@CsvDate("yyyyMMdd")
private Date startTime;//開始時間
try {
InputStreamReader is = new InputStreamReader(new FileInputStream("E:\\hunan\\cc.csv"), "GBK");
List<SiteData> users = new CsvToBeanBuilder(is)
.withType(SiteData.class)
.withSeparator(',')
.withSkipLines(1)
.build()
.parse();
System.out.println("users = " + new Gson().toJson(users));
} catch (Exception e) {
e.printStackTrace();
}