main
黄海 2 years ago
parent a1bc676c8d
commit b97a4e04d9

@ -0,0 +1,62 @@
package UnitTest.ImportExcel;
import com.dsideal.QingLong.Util.ImportUtil;
import com.jfinal.kit.StrKit;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
public class TestReadMergeCell {
/**
*
*
* @param sheet
* @param row
* @param col
* @return
*/
public static boolean isMerged(XSSFSheet sheet, int row, int col) {
// 判断单元格是否被合并
for (CellRangeAddress range : sheet.getMergedRegions()) {
if (row >= range.getFirstRow() && row <= range.getLastRow()
&& col >= range.getFirstColumn() && col <= range.getLastColumn()) {
return true;
}
}
return false;
}
public static void main(String[] args) throws IOException {
String source = "D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\source.xlsx";
int row = 3; // 假设要判断的单元格的行号
int col = 1; // 假设要判断的单元格的列号
InputStream is = new FileInputStream(source);
XSSFWorkbook wb = new XSSFWorkbook(is);
XSSFSheet sheet = wb.getSheetAt(0);
for (int i = row; i <= sheet.getLastRowNum(); i++) {
if (isMerged(sheet, i, col)) {
XSSFCell cell = sheet.getRow(i).getCell(col);
String value = ImportUtil.getValue(cell).toString();
if (StrKit.isBlank(value)) {
for (int j = i - 1; ; j--) {
String prev = ImportUtil.getValue(sheet.getRow(j).getCell(col)).toString();
if (!StrKit.isBlank(prev)) {
System.out.println(prev);
break;
}
}
} else {
System.out.println(ImportUtil.getValue(cell));
}
}
}
}
}

@ -6,6 +6,7 @@ import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.*;
@ -351,6 +352,25 @@ public class ImportUtil {
Db.update(sql);
}
/**
*
*
* @param sheet
* @param row
* @param col
* @return
*/
public static boolean isMerged(XSSFSheet sheet, XSSFCell cell) {
// 判断单元格是否被合并
for (CellRangeAddress range : sheet.getMergedRegions()) {
if (cell.getRowIndex() >= range.getFirstRow() && cell.getRowIndex() <= range.getLastRow()
&& cell.getColumnIndex() >= range.getFirstColumn() && cell.getColumnIndex() <= range.getLastColumn()) {
return true;
}
}
return false;
}
/**
*
*
@ -400,17 +420,32 @@ public class ImportUtil {
XSSFCell cell = row.getCell(j);
String colType = _map.get(j).getStr("column_type");
String colName = _map.get(j).getStr("column_name");
if (colType.equals("Integer"))
writeRecord.set(colName, (int) Double.parseDouble(getValue(cell).toString()));
else if (colType.equals("String"))
writeRecord.set(colName, getValue(cell).toString());
else if (colType.equals("Double"))
writeRecord.set(colName, Double.parseDouble(getValue(cell).toString()));
else if (colType.equals("Date")) {
String dateString = getValue(cell).toString();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(dateString);
writeRecord.set(colName, date);
//cell可能是被合并的单元格
if (isMerged(sheet, cell)) {
String value = ImportUtil.getValue(cell).toString();
if (StrKit.isBlank(value)) {
for (int k = i - 1; ; k--) {
String prev = ImportUtil.getValue(sheet.getRow(k).getCell(j)).toString();
if (!StrKit.isBlank(prev)) {
writeRecord.set(colName, prev);
break;
}
}
}
} else {
if (colType.equals("Integer"))
writeRecord.set(colName, (int) Double.parseDouble(getValue(cell).toString()));
else if (colType.equals("String"))
writeRecord.set(colName, getValue(cell).toString());
else if (colType.equals("Double"))
writeRecord.set(colName, Double.parseDouble(getValue(cell).toString()));
else if (colType.equals("Date")) {
String dateString = getValue(cell).toString();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(dateString);
writeRecord.set(colName, date);
}
}
}
writeList.add(writeRecord);

Loading…
Cancel
Save