Skip to main content

Sheet

This chapter introduces how to configure Sheets to read data.

Reading Multiple Sheets​

Overview​

You can read multiple sheets from a spreadsheet file, but the same sheet cannot be read repeatedly.

Code Example​

Reading All Sheets​

@Test
public void readAllSheet() {
String fileName = "path/to/demo.xlsx";

FesodSheet.read(fileName, DemoData.class, new DemoDataListener()).doReadAll();
}

Reading Specific Sheets​

Overview​

You can read a specific sheet from a spreadsheet file, supporting specification by sheet index or name.

Note: Sheet names are limited to 31 characters in Microsoft Excel. When reading sheets by name, use the actual sheet name that appears in the Microsoft Excel file.

Code Example​

@Test
public void readSingleSheet() {
String fileName = "path/to/demo.xlsx";

try (ExcelReader excelReader = FesodSheet.read(fileName).build()) {
// Sheet index
ReadSheet sheet1 = FesodSheet.readSheet(0).head(DemoData.class)
.registerReadListener(new DemoDataListener()).build();
// Sheet name
ReadSheet sheet2 = FesodSheet.readSheet("Sheet2").head(DemoData.class)
.registerReadListener(new DemoDataListener()).build();
excelReader.read(sheet1, sheet2);
}
}

Ignoring Hidden Sheets​

Overview​

By setting the ignoreHiddenSheet parameter to true, data from sheets in "hidden" state will not be read. This supports both "normal hidden" and "very hidden" states.

Code Example​

@Test
public void exceptionRead() {
String fileName = "path/to/demo.xlsx";

FesodSheet.read(fileName, DemoData.class, new DemoDataListener())
.ignoreHiddenSheet(Boolean.TRUE)
.sheet()
.doRead();
}

In Microsoft Excel, Sheets have two hidden states: "normal hidden (xlSheetHidden)" and "very hidden ( xlSheetVeryHidden)". Very hidden can be set through VBA, and in this case, the hidden sheet cannot be unhidden through the "Unhide" operation.

Reading Specific Columns​

Overview​

By configuring includeColumnIndexes, you can specify which columns to read from a sheet. Unselected columns are skipped during parsing, and the target columns are remapped to contiguous zero-based indices.

Note: This feature supports both modern .xlsx (OOXML) and legacy .xls (BIFF8 / Excel 97–2003) file formats.

Code Example​

@Test
public void readSpecificColumns() {
// Works with both demo.xlsx and demo.xls
String fileName = "path/to/demo.xls";

// Specify 0-based column indices to include (e.g., Column A, C, E)
List<Integer> includeColumnIndexes = Arrays.asList(0, 2, 4);

// Option 1
try (ExcelReader excelReader = FesodSheet.read(fileName, DemoData.class, new DemoDataListener()).build()) {
ReadSheet readSheet = FesodSheet.readSheet(0, "Sheet1", targetColumns).build();
excelReader.read(readSheet);
}

// Option 2
try (ExcelReader excelReader = FesodSheet.read(fileName).build()) {
ReadSheet readSheet = FesodSheet.readSheet(0)
.head(DemoData.class)
.includeColumnIndexes(includeColumnIndexes)
.registerReadListener(new DemoDataListener())
.build();
excelReader.read(readSheet);
}
}