Super CSV是一个速度奇快、免费跨平台的 CSV 格式数据的读写库,可以方便的处理对象、Map、列表的读写操作,以及自动化的类型转换和数据检查功能。
http://supercsv.sourceforge.net/
版本:SuperCSV-1.52.jar
1、读CSV
2、写CSV
3、自定义CellProcessor
其他的CSV解析器还有:
Commons CSV:http://commons.apache.org/proper/commons-csv/
OpenCSV:http://opencsv.sourceforge.net/
OrangeSignal CSV:http://orangesignal.github.io/orangesignal-csv/
CSV Library Features Matrix
http://orangesignal.github.io/orangesignal-csv/csv_library_feature_matrix.html 此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68315.html
http://supercsv.sourceforge.net/
版本:SuperCSV-1.52.jar
1、读CSV
- InputStreamReader freader = new InputStreamReader(new FileInputStream(
- new File("csv/test1.csv")), "GB2312");
- ICsvBeanReader reader = new CsvBeanReader(freader,
- CsvPreference.EXCEL_PREFERENCE);
- //获取头部信息
- String[] headers = reader.getCSVHeader(true);
- //获取数据部分
- UserBean bean = null;
- while ((bean = reader.read(UserBean.class, headers, UserBean.readProcessors)) != null) {
- System.out.print(bean.getName() + "\t");
- System.out.print(bean.getAge() + "\t");
- System.out.print(bean.getBirthday() + "\t");
- System.out.println(bean.getAddress());
- }
2、写CSV
- OutputStreamWriter fwriter = new OutputStreamWriter(
- new FileOutputStream(new File("csv/test2.csv")), "GB2312");
- SimpleDateFormat format = new SimpleDateFormat("yyyy/M/d");
- ICsvBeanWriter writer = new CsvBeanWriter(fwriter,
- CsvPreference.EXCEL_PREFERENCE);
- //做3条数据
- UserBean bean1 = new UserBean();
- bean1.setName("赵,四"); //特殊字符:逗号
- bean1.setAge(26);
- bean1.setBirthday(format.parse("1984/10/30"));
- bean1.setAddress("辽宁");
- UserBean bean2 = new UserBean();
- bean2.setName("刘\n能"); //特殊字符:换行
- bean2.setAge(24);
- bean2.setBirthday(format.parse("1986/5/13"));
- bean2.setAddress("吉林");
- UserBean bean3 = new UserBean();
- bean3.setName("谢\"广坤"); //特殊字符:双引号
- bean3.setAge(22);
- bean3.setBirthday(format.parse("1988/10/8"));
- bean3.setAddress("黑龙江");
- //输出头部
- String headers[] = { "name", "age", "birthday", "address" };
- writer.writeHeader(headers);
- //按顺序输出数据
- writer.write(bean1, headers, UserBean.writeProcessors);
- writer.write(bean2, headers, UserBean.writeProcessors);
- writer.write(bean3, headers, UserBean.writeProcessors);
- writer.close();
3、自定义CellProcessor
- InputStreamReader freader = new InputStreamReader(new FileInputStream(
- new File("csv/test5.csv")), "GB2312");
- ICsvBeanReader reader = new CsvBeanReader(freader,
- CsvPreference.EXCEL_PREFERENCE);
- //获取头部信息
- String[] headers = reader.getCSVHeader(true);
- CellProcessor[] readProcessors = new CellProcessor[] {
- new StrMinMax(2, 10),
- new ParseInt(),
- new ParseDate("yyyy/M/d"),
- new CellProcessorAdaptor() {
- @Override
- public Object execute(final Object value, final CSVContext context) {
- String v = (String) value;
- if (v.length() > 5) {
- v = v.substring(0,5) + "......";
- }
- return next.execute(v, context);
- }
- }};
- //获取数据部分
- UserBean bean = null;
- while ((bean = reader.read(UserBean.class, headers, readProcessors)) != null) {
- System.out.print(bean.getName() + "\t");
- System.out.print(bean.getAge() + "\t");
- System.out.print(bean.getBirthday() + "\t");
- System.out.println(bean.getAddress());
- }
- System.out.println();
- reader.close();
其他的CSV解析器还有:
Commons CSV:http://commons.apache.org/proper/commons-csv/
OpenCSV:http://opencsv.sourceforge.net/
OrangeSignal CSV:http://orangesignal.github.io/orangesignal-csv/
CSV Library Features Matrix
http://orangesignal.github.io/orangesignal-csv/csv_library_feature_matrix.html 此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68315.html