import java.io.FileInputStream;
|
import java.util.HashSet;
|
import java.util.Set;
|
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.util.CellRangeAddress;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
/** 只读导出官方「微信费率规则ID」Excel 的全部单元格,含合并区域标注。 */
|
public class DumpExcel {
|
public static void main(String[] args) throws Exception {
|
String path = args.length > 0 ? args[0] : "docs/huifu/reference/official/wx-fee-rule-id.xlsx";
|
try (Workbook workbook = new XSSFWorkbook(new FileInputStream(path))) {
|
DataFormatter formatter = new DataFormatter();
|
for (int s = 0; s < workbook.getNumberOfSheets(); s++) {
|
Sheet sheet = workbook.getSheetAt(s);
|
System.out.println("########## SHEET[" + s + "] name=" + sheet.getSheetName()
|
+ " rows=" + sheet.getLastRowNum() + " ##########");
|
Set<String> merged = new HashSet<>();
|
for (CellRangeAddress range : sheet.getMergedRegions()) {
|
merged.add(range.formatAsString());
|
}
|
for (int r = sheet.getFirstRowNum(); r <= sheet.getLastRowNum(); r++) {
|
Row row = sheet.getRow(r);
|
if (row == null) continue;
|
StringBuilder line = new StringBuilder();
|
for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) {
|
Cell cell = row.getCell(c);
|
if (cell == null) continue;
|
String value = formatter.formatCellValue(cell).trim();
|
if (value.isEmpty()) continue;
|
line.append('[').append((char) ('A' + c)).append(r + 1).append(']').append(value).append(" | ");
|
}
|
if (line.length() > 0) System.out.println("R" + (r + 1) + ": " + line);
|
}
|
for (String range : merged) System.out.println("MERGED: " + range);
|
}
|
}
|
}
|
}
|