Browse Source

CSV 编码问题

4.1.3.A
jueyue 6 years ago
parent
commit
f3d839bd75
3 changed files with 14 additions and 9 deletions
  1. +2
    -2
      easypoi-base/src/main/java/cn/afterturn/easypoi/csv/CsvImportUtil.java
  2. +11
    -7
      easypoi-base/src/main/java/cn/afterturn/easypoi/csv/imports/CsvImportService.java
  3. +1
    -0
      easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java

+ 2
- 2
easypoi-base/src/main/java/cn/afterturn/easypoi/csv/CsvImportUtil.java View File

@@ -39,8 +39,8 @@ public final class CsvImportUtil {
* @param params * @param params
* @return * @return
*/ */
public static <T> List<T> importCsv(InputStream inputstream, Class<?> pojoClass,
public static void importCsv(InputStream inputstream, Class<?> pojoClass,
CsvImportParams params, ICsvSaveDataHandler saveDataHandler) { CsvImportParams params, ICsvSaveDataHandler saveDataHandler) {
return new CsvImportService().readExcel(inputstream, pojoClass, params, saveDataHandler);
new CsvImportService().readExcel(inputstream, pojoClass, params, saveDataHandler);
} }
} }

+ 11
- 7
easypoi-base/src/main/java/cn/afterturn/easypoi/csv/imports/CsvImportService.java View File

@@ -21,10 +21,7 @@ import org.apache.poi.ss.usermodel.Cell;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.*;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.*; import java.util.*;


@@ -58,8 +55,15 @@ public class CsvImportService extends ImportBaseService {
} }
getAllExcelField(targetId, fileds, excelParams, excelCollection, pojoClass, null, null); getAllExcelField(targetId, fileds, excelParams, excelCollection, pojoClass, null, null);
} }
if(PoiPublicUtil.hasBom(inputstream)){

inputstream = new PushbackInputStream(inputstream, 3);
byte[] head = new byte[3];
inputstream.read(head);
if (head[0] == -17 && head[1] == -69 && head[2] == -65) {
((PushbackInputStream) inputstream).unread(head, 0, 3);
inputstream = new UnicodeInputStream(inputstream); inputstream = new UnicodeInputStream(inputstream);
} else {
((PushbackInputStream) inputstream).unread(head, 0, 3);
} }
BufferedReader rows = new BufferedReader(new InputStreamReader(inputstream, params.getEncoding())); BufferedReader rows = new BufferedReader(new InputStreamReader(inputstream, params.getEncoding()));
for (int j = 0; j < params.getTitleRows(); j++) { for (int j = 0; j < params.getTitleRows(); j++) {
@@ -80,11 +84,11 @@ public class CsvImportService extends ImportBaseService {
Object object = null; Object object = null;
String[] cells; String[] cells;
while ((row = rows.readLine()) != null) { while ((row = rows.readLine()) != null) {
if(StringUtils.isEmpty(row)){
if (StringUtils.isEmpty(row)) {
continue; continue;
} }
errorMsg = new StringBuilder(); errorMsg = new StringBuilder();
cells = row.split(params.getSpiltMark(),-1);
cells = row.split(params.getSpiltMark(), -1);
// 判断是集合元素还是不是集合元素,如果是就继续加入这个集合,不是就创建新的对象 // 判断是集合元素还是不是集合元素,如果是就继续加入这个集合,不是就创建新的对象
// keyIndex 如果为空就不处理,仍然处理这一行 // keyIndex 如果为空就不处理,仍然处理这一行
if (params.getKeyIndex() != null && (cells[params.getKeyIndex()] == null if (params.getKeyIndex() != null && (cells[params.getKeyIndex()] == null


+ 1
- 0
easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java View File

@@ -40,6 +40,7 @@ import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ss.usermodel.PictureData; import org.apache.poi.ss.usermodel.PictureData;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor; import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDrawing; import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFPicture; import org.apache.poi.xssf.usermodel.XSSFPicture;


Loading…
Cancel
Save