加载中…
个人资料
iPan
iPan
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,058,661
  • 关注人气:234
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

读取自定义格式的CSV文件

(2022-06-17 16:53:26)
标签:

excel

csv

poi

easyexcel

ipan-poi

分类: J2EE笔记
import java.io.File;
import java.util.Iterator;
import java.util.Map;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.read.metadata.holder.csv.CsvReadWorkbookHolder;
import com.ipan.kits.mapper.ExcelCsvMapper;
import com.ipan.kits.text.Charsets;
import com.ipan.poi.easyexcel.ehcache2.SimpleReadCacheSelector2;
import com.ipan.poi.easyexcel.patch305.EasyExcel2;
import com.ipan.poi.easyexcel.patch305.ExcelReaderSheetBuilder2;

// 使用ipan_poi3 V3.0.6依赖easyexcel3.0.5 示例
public class Test04 {

public static void main(String[] args) throws Exception {
test1();
test2();
}
public static void test1() throws Exception { // 优势:简单;仅依赖commons-csv即可;
ExcelCsvMapper mapper = ExcelCsvMapper.create(CSVFormat.DEFAULT.builder()
.setAutoFlush(true) // 实际autoFlush=false,默认情况下BufferWriter在close时候也会自动flush
.setTrim(true) // 自动对单元格做首尾trim
.setDelimiter("\t") // 分隔符
.build()); // 使用EXCEL配置基础上修改)
CSVParser parser = mapper.parse("d:/yltest/batch_rtm_list.csv", Charsets.UTF_8);
Iterator iter = parser.iterator();
while (iter.hasNext()) {
CSVRecord record = iter.next();
System.out.println(record);
System.out.println(record.get(0) + ", " + record.get(1) + ", " + record.get(2));
}
System.out.println("pause.");
parser.close();
}
public static void test2() { // 优势:代码微调即可支持xls、xlsx;
File file = new File("d:/yltest/batch_rtm_list.csv");
ExcelReaderSheetBuilder2 sheetBuilder = EasyExcel2.read(file, new AnalysisEventListener>() {

@Override
public void invoke(Map data, AnalysisContext context) {
System.out.println(data);
System.out.println(data.get(0) + ", " + data.get(1) + ", " + data.get(2));
}

@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println("完成");
}
}).readCacheSelector(new SimpleReadCacheSelector2())
.sheet()
.headRowNumber(0);
ReadWorkbookHolder rh = sheetBuilder.excelReader().analysisContext().readWorkbookHolder();
if (rh instanceof CsvReadWorkbookHolder) {
CsvReadWorkbookHolder holder = (CsvReadWorkbookHolder) rh;
holder.setCsvFormat(CSVFormat.DEFAULT.builder()
.setAutoFlush(true) // 实际autoFlush=false,默认情况下BufferWriter在close时候也会自动flush
.setTrim(true) // 自动对单元格做首尾trim
.setDelimiter("\t") // 分隔符
.build());
}
sheetBuilder.doRead();
}
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有