Hi,

Related web-pages state that percent is allowed but may need quoting, e.g.
https://www.keynotesupport.com/excel-basics/worksheet-names-characters-allowed-prohibited.shtml

Maybe you are using it in some reference where the sheet-name needs to be
quoted with single quotes?

Dominik.

On Mon, May 23, 2022 at 6:55 PM Vicky B <vickyb2...@gmail.com> wrote:

> The issue was not really something to do with code, but with sheet name .
> Since one of the sheet had % character in the name , this caused an issue ,
> after removing % in the sheet name it worked fine.
>
> On Mon, May 23, 2022 at 10:56 AM Vicky B <vickyb2...@gmail.com> wrote:
>
> > Hi Team,
> >
> > The code that worked for one sheet now when applied for multiple sheets
> > get warning message "we found problem with some content in excel"
> > basically i still get Repair excel issue when i am trying to create the
> > excel with multiple sheets but i don't get it when i use the same code
> for
> > single sheet, not really sure what's wrong .
> >
> > On Tue, May 17, 2022 at 4:01 PM Dominik Stadler <dominik.stad...@gmx.at>
> > wrote:
> >
> >> Hi,
> >>
> >> I am glad that you could solve it. Unfortunately I actually know next to
> >> nothing about this part of the MS formats so probably cannot tell why it
> >> was happening and if there are better ways to fix it.
> >>
> >> Dominik.
> >>
> >>
> >> On Mon, May 16, 2022 at 8:24 PM Vicky B <vickyb2...@gmail.com> wrote:
> >>
> >> > Thanks Dominik for checking the issue
> >> >
> >> > I was able to resolve the issue. I think the problem was the way we
> >> create
> >> > the table  and add column information. Please let me know if the code
> >> > changes are valid, also wanted to know how do we create tables when we
> >> want
> >> > to have dynamic no of rows and cells.
> >> >
> >> >
> >> >
> >> > The code that caused the issue was once after creating the table we
> had
> >> to
> >> > assign Id and column names , in-order to that we used to add a new
> >> column .
> >> >
> >> >  CTTable cttable = table.getCTTable();
> >> >
> >> >               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));
> >> >
> >> >               }
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > Since we had already shared the start and end cell  reference  while
> >> > creating table like below
> >> >
> >> >
> >> >
> >> >  CellReference startCellReference = *new* CellReference(0, 0);
> >> >
> >> >               CellReference endCellReference = *new* CellReference(2,
> >> > colNames.size() - 1);
> >> >
> >> >               AreaReference areaReference = *new* AreaReference(
> >> > startCellReference, endCellReference,
> >> >
> >> >                            SpreadsheetVersion.*EXCEL2007*);
> >> >
> >> >               XSSFTable table = sheet.createTable(areaReference);
> >> >
> >> >
> >> >
> >> > Since table had the details of   start and end cell values we really
> >> don’t
> >> > have  add a new column , hence   I changed the code to using existing
> >> > columns and changed whole code  and this resolved the issue
> >> >
> >> >               XSSFSheet sheet = workbook.createSheet("Sheet");
> >> >
> >> >               List<String> colNames = Arrays.*asList*("Column1",
> >> "Column2",
> >> > "Column3");
> >> >
> >> >               CellReference startCellReference = *new*
> CellReference(0,
> >> 0);
> >> >
> >> >               CellReference endCellReference = *new* CellReference(2,
> >> > colNames.size() - 1);
> >> >
> >> >               AreaReference areaReference = *new* AreaReference(
> >> > startCellReference, endCellReference,
> >> >
> >> >                            SpreadsheetVersion.*EXCEL2007*);
> >> >
> >> >               XSSFTable table = sheet.createTable(areaReference);
> >> >
> >> >               CTTable cttable = table.getCTTable();
> >> >
> >> >               CTTableColumns columns = cttable.getTableColumns();
> >> >
> >> >               columns.setCount(colNames.size());
> >> >
> >> >               *for* (*int* i = 1; i <= colNames.size(); i++) {
> >> >
> >> >                      CTTableColumn column =
> >> columns.getTableColumnArray(i
> >> > -1);
> >> >
> >> >                      column.setId(i);
> >> >
> >> >                      column.setName(colNames.get(i - 1));
> >> >
> >> >               }
> >> >
> >> >
> >> >
> >> > As mentioned earlier, please let me know if the code changes are valid
> >> and
> >> > what is the need to create new rows based on the records in the
> database
> >> > when I am not aware of any rows beforehand. How do we create tables in
> >> this
> >> > scenario?
> >> >
> >> > Thanks,
> >> > Vicky
> >> > On Sun, May 15, 2022 at 5:10 AM Dominik Stadler <
> dominik.stad...@gmx.at
> >> >
> >> > wrote:
> >> >
> >> > > 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*
> >> > > >
> >> > >
> >> >
> >> >
> >> > --
> >> >
> >> >
> >> >
> >> > *Thanks & Regards Vickyb*
> >> >
> >>
> >
> >
> > --
> >
> >
> >
> > *Thanks & Regards Vickyb*
> >
>
>
> --
>
>
>
> *Thanks & Regards Vickyb*
>

Reply via email to