读取自定义格式的CSV文件
(2022-06-17 16:53:26)
标签:
excelcsvpoieasyexcelipan-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;
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();
}
}
后一篇:通用单点登录解决方案