스트리밍 된 통합 문서 (SXSSFWorkbook)에서 Excel 테이블을 만들려고합니다. API에 의해 직접 지원되지는 않지만 기본 XSSFWorkbook (workbook.getXSSFWorkbook)에 액세스하여 성공했습니다.Excel 테이블이있는 SXSSF
Excel (2007)에서 파일을 열 때 "Excel에서"test.xlsx "의 읽을 수없는 콘텐츠를 찾았습니다.이 통합 문서의 내용을 복구 하시겠습니까?"라는 메시지가 나타납니다. 예를 클릭하면 통합 문서를 성공적으로 복구하고 올바른 결과를 얻습니다.
로그에 "복구 된 레코드 : /xl/tables/table1.xml 파트 (테이블)의 테이블"이 표시됩니다.
누구나 Excel 오류를 피할 수있는 방법에 대한 아이디어가 있습니까? 표의 첫 번째 행
public class SXSSFTest {
private static final int NB_ROWS = 5;
private static final int NB_COLS = 5;
public static void main(String[] args) throws Exception {
try (SXSSFWorkbook workbook = new SXSSFWorkbook();
FileOutputStream outputStream = new FileOutputStream("C:\\test.xlsx")) {
SXSSFSheet sheet = workbook.createSheet();
fillSheet(sheet);
String dataRange = new AreaReference(
new CellReference(0, 0),
new CellReference(NB_ROWS - 1, NB_COLS - 1))
.formatAsString();
CTTable cttable = workbook.getXSSFWorkbook()
.getSheetAt(0)
.createTable()
.getCTTable();
CTTableStyleInfo tableStyle = cttable.addNewTableStyleInfo();
tableStyle.setName("TableStyleMedium17");
cttable.setRef(dataRange);
cttable.setDisplayName("TABLE");
cttable.setName("TABLE");
cttable.setId(1L);
CTTableColumns columns = cttable.addNewTableColumns();
columns.setCount(NB_COLS);
for (int c = 0; c < NB_COLS; c++) {
CTTableColumn column = columns.addNewTableColumn();
column.setName("Column" + c);
column.setId(c + 1L);
}
cttable.setAutoFilter(CTAutoFilter.Factory.newInstance());
workbook.write(outputStream);
}
}
private static void fillSheet(SXSSFSheet sheet) {
for (int rowNb = 0; rowNb < NB_ROWS; rowNb++) {
SXSSFRow row = sheet.createRow(rowNb);
for (int colNb = 0; colNb < NB_COLS; colNb++) {
SXSSFCell cell = row.createCell(colNb);
cell.setCellValue("Cell-" + colNb);
}
}
}
}
나는 이름이 일치했다 몰랐다. 좋아 고마워! – user280767