Hi,

can you try to narrow down the test-case so that it only does the bare
minimum steps necessary to show the problem? Some of the steps may be
unrelated, so making the code-snippet shorter would help us a lot to take a
look.

Also the formatting of the code-snippet is broken, maybe you can attach it
or upload it somewhere?

Thanks... Dominik.

On Sat, May 14, 2022 at 3:33 AM Vicky B <vickyb2...@gmail.com> wrote:

> Hi All,
>
> I am trying to create table in an excel sheet , when opening excel i get
> message "We found problem with some content in excel, would you like to
> recover".
> When we open the exel file I do see the table with column but still i get
> error
> "Repair to Excel"
> Removed Part: /xl/tables/table1.xml part with XML error. (Table) Load
> error. Line 2, column 345.
>
> Not sure what is the issue with code , I am using POI 5.2.2 , below is the
> code , can you please let me know what is wrong with the code.
>
> *import* org.apache.poi.ss.SpreadsheetVersion;
>
> *import* org.apache.poi.ss.util.AreaReference;
>
> *import* org.apache.poi.ss.util.CellReference;
>
> *import* org.apache.poi.xssf.usermodel.XSSFCell;
>
> *import* org.apache.poi.xssf.usermodel.XSSFRow;
>
> *import* org.apache.poi.xssf.usermodel.XSSFSheet;
>
> *import* org.apache.poi.xssf.usermodel.XSSFTable;
>
> *import* org.apache.poi.xssf.usermodel.XSSFWorkbook;
>
> *import* org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTable;
>
> *import* org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn;
>
> *import*
> org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumns;
>
> *import*
>  org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableStyleInfo;
>
>
>
> *public* *class* CreateTablePOI3 {
>
>
>
>        *private* *static* *void* createTable(XSSFSheet sheet, List<String>
> colNames) {
>
>
>
>               CellReference startCellReference = *new* CellReference(0, 0);
>
>               // CellReference endCellReference = new CellReference(2,
> colNames.size()); //one
>
>               // column too wide
>
>               CellReference endCellReference = *new* CellReference(2,
> colNames.size() - 1);
>
>               // AreaReference areaReference
>
>               //
> =xssfWorkBook.getCreationHelper().createAreaReference(startCellReference,
>
>               // endCellReference);
>
>               AreaReference areaReference = *new* AreaReference(
> startCellReference, endCellReference,
>
>                            SpreadsheetVersion.*EXCEL2007*);
>
>               XSSFTable table = sheet.createTable(areaReference);
>
>               CTTable cttable = table.getCTTable();
>
> //
>
> //       CellReference startCellReference = new CellReference(0, 0);
>
> //       //CellReference endCellReference = new CellReference(2,
> colNames.size()); //one column too wide
>
> //       CellReference endCellReference = new CellReference(2,
> colNames.size()-1);
>
>
>
>               cttable.setDisplayName("SummaryData_" +
> sheet.getSheetName());
>
>               // cttable.setId(1); // Don't set table's Id manually. The
> sheet.createTable()
>
>               // is doing that properly.
>
>               cttable.setName("SummaryData_" + sheet.getSheetName());
>
>               // cttable.setRef(areaReference.formatAsString());
>
>               cttable.setTotalsRowShown(*false*);
>
>
>
>               CTTableStyleInfo styleInfo = cttable.addNewTableStyleInfo();
>
>               styleInfo.setName("TableStyleMedium13");
>
>               styleInfo.setShowColumnStripes(*false*);
>
>               styleInfo.setShowRowStripes(*true*);
>
>
>
>               CTTableColumns columns = cttable.addNewTableColumns();
>
>               columns.setCount(colNames.size());
>
>               *for* (*int* i = 1; i <= colNames.size(); i++) {
>
>                      CTTableColumn column = columns.addNewTableColumn();
>
>                      column.setId(i);
>
>                      column.setName(colNames.get(i - 1));
>
>               }
>
>        }
>
>
>
>        *public* *static* *void* main(String[] args) *throws* Exception {
>
>
>
>               List<String> sheetNames = Arrays.*asList*("Sheet1", "Sheet2",
> "Sheet3");
>
>
>
>               XSSFWorkbook workbook = *new* XSSFWorkbook();
>
>               *for* (String sheetName : sheetNames) {
>
>                      XSSFSheet sheet = workbook.createSheet(sheetName);
>
>                      List<String> colNames = Arrays.*asList*("Column1",
> "Column2", "Column3");
>
>
>
>                      *createTable*(sheet, colNames);
>
>
>
>                      *for* (*int* r = 0; r <= 2; r++) {
>
>                            XSSFRow row = sheet.createRow(r);
>
>                            *for* (*int* c = 0; c < colNames.size(); c++) {
>
>                                   XSSFCell cell = row.createCell(c);
>
>                                   // cell.setCellValue("some value");
> //sheet's cell values must match the table's
>
>                                   // column names
>
>                                   *if* (r == 0) {
>
>
>  cell.setCellValue(colNames.get(c));
>
>                                   } *else* {
>
>                                          cell.setCellValue("some value");
>
>                                   }
>
>                            }
>
>                      }
>
>                      *for* (*int* i = 0; i < colNames.size(); i++) {
>
>                            sheet.autoSizeColumn(i);
>
>                      }
>
>               }
>
>
>
>               FileOutputStream out = *new* FileOutputStream("test.xlsx");
>
>               workbook.write(out);
>
>               out.close();
>
>               workbook.close();
>
>        }
>
> }
>
>
>
> --
>
>
>
> *Thanks & Regards Vickyb*
>

Reply via email to