Hi Andy, hi Lorenzo,

I'm writing to a different file than I read as template, it's hardcoded in
the test. 

Calling sheet.getLastRowNum() just before creating the row with number 15
gives me 12, the expected value because the template has 13 rows. So
inserting a row number 15 should work, it needn't be the immediately
following line, isn't it? Anyway I tried with number 13 as well and it
doesn't work either.

Peter

-----Urspr�ngliche Nachricht-----
Von: Lorenzo Resta [mailto:[EMAIL PROTECTED]]
Gesendet: Dienstag, 9. April 2002 15:34
An: '[EMAIL PROTECTED]'
Betreff: RE: Adding rows to an existing xls-file doesn't work with my
code


Hi Peter,

I had a similar effect: If you try to add a row that already exists, it will
not be added. Does the row number 15 exist already in your excel file or
not? AFAIK POI is not able to insert rows inbetween existsing rows ...., but
only add new rows after the last existing row. ..... I am talking about POI
1.20.

Cheers

Lorenzo

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Dienstag, 9. April 2002 15:28
To: [EMAIL PROTECTED]
Subject: AW: Adding rows to an existing xls-file doesn't work with my
code


Hi Andy,

Thanks for your quick anwser. I tried it with a simple test, but it doesn't
help. I checked with the debugger immediately before wb.write().The workbook
object had the new row and cell as well as the changed cell values, but the
written file showed only the changed cells.

Peter




public void test(){

    HSSFRow r = null;
    HSSFCell c = null;
    HSSFSheet s = wb.getSheetAt(0);

    // change cell values
    c = s.getRow(5).getCell((short)(3));
    c.setCellType(HSSFCell.CELL_TYPE_STRING);
    c.setCellValue( "XXXXXX" );


    // create a row
    r = s.createRow((short)15);
    c = r.createCell( (short)5, HSSFCell.CELL_TYPE_STRING );
    c.setCellValue("teststring");
  }

  public boolean write(){
    // create a new file
    try{

      FileOutputStream out    = new FileOutputStream("c:\\temp\\test.xls");

      // write the workbook to the output stream
      wb.write(out);
      out.close();
      return true;
    }




-----Urspr�ngliche Nachricht-----
Von: Andrew C. Oliver [mailto:[EMAIL PROTECTED]]
Gesendet: Dienstag, 9. April 2002 14:29
An: poi users
Betreff: Re: Adding rows to an existing xls-file doesn't work with my
code


Can you try writing a simple test case which opens the workbook, changes
some records and writes it back adding some hard coded strings (without
all of the  rest).  

Thanks,

-Andy

On Tue, 2002-04-09 at 07:59, [EMAIL PROTECTED] wrote:
> Hi,
> 
> I'm new to POI and would like to use it for generating XLS-Files. Now
> something doesn't work  as I expect. 
> 
> What should happen:
> 1) I would like to read an xls-file as template (about 20 rows).
> 2) Then some cells in the workbook are changed.
> 3) Then some rows should be added to the workbook.
> 4) The workbook should be written as a new xls file.
> 
> Everything works fine, the changes under 2) are done, but the rows under
3)
> are not added. I don't get an exception and using a debugger I've seen
that
> the rows are created, as well as the cells are created and filled with
data.
> They are just missing in the written file. 
> 
> If I create a new workbook instead of reading one, adding rows with
similar
> code works without any problem.
> 
> For sure I'm doing something wrong, but I can't find where. Does somebody
> have a hint for me?
> 
> 
> The code looks like:
> 
> //snippet of "caller"-class
> (...)
> //produce somehow an arraylist of arrayobjects with strings to write in
the
> cells
> ArrayList testdata = (...)
> FahrplanXLS fp = new FahrplanXLS("test.xls");
> fp.setFahrplanData( testdata );
> fp.write();
> (...)
> 
> 
> //parts of class with logic for changing cells and adding records to the
> workbook
> public class FahrplanXLS {
>   private HSSFWorkbook  wb = null; // declare a workbook object reference
>   
>   /** constructor
>    *
>    */      
>   public FahrplanXLS(String inFilename) {
> 
>     try
>     {
> 
>       Filesystem fs = new Filesystem( new FileInputStream(inFilename) );
>       // create the workbook
>       wb = new HSSFWorkbook( fs );
>     }
>     catch(FileNotFoundException e){
>     }
>     catch(IOException e){
>     }
> 
>   }
> 
> 
>   /**
>    * writes fahrplan data in the template and adds new rows with
additional
>    * data
>    * @param fahrplandata
>    */
>   public void setFahrplanData( ArrayList fahrplandata ){
>     HSSFCell cell = getCellWithTag( XLS_TAG_FAHRPLAN_VALUES );
>     HSSFSheet sheet = wb.getSheetAt( actualSheetNum );
>     
>     //change some cell values of the template
>     (...)
> 
>     //get last rownum with data
>     actualRowNum = sheet.getLastRowNum()+1;
>     //add more records until arraylist is empty
>     while( !fahrplandata.isEmpty() ){
>       addRecord( sheet, actualCellNum, actualRowNum, (String[])
> fahrplandata.remove(0) );
>       actualRowNum++;
>     }
>   }
> 
> 
>   /**
>    * adds a line with Fahrplan data starting at the first row after header
> information
>    * @param cellNum  number of cell from the left for first value of the
> record
>    * @param rowNum   number of row to create
>    * @param record   record of Strings with data
>    */
>   public void addRecord( HSSFSheet sheet, short cellNum, int rowNum,
> String[] record ){
> 
>     // create a row
>     HSSFRow row = sheet.createRow( (short)rowNum );
>     HSSFCell cell = null;
> 
>     // create a cell for each array member and write the data
>     for( short i = 0; i < record.length; i++ ){
>       cell = row.createCell( (short)(cellNum + i),
HSSFCell.CELL_TYPE_STRING
> );
>       cell.setCellValue( record[i] );
>     }
>   }
> 
>   /**
>    * writes xls file
>    * @return true if file was written else false
>    */
>   public boolean write(){
>     // create a new file
>     try{
>       FileOutputStream out    = new FileOutputStream(filename);
> 
>       // write the workbook to the output stream
>       wb.write(out);
>       out.close();
>       return true;
>     }
>     catch(Exception e){
>       //logit
>       return false;
>     }
>   }
> 
> }
> 
> 
> Thanks in advance and kind regards,
> 
> Peter
> 
> ---------------
> Peter H�berli
> BKW-FMB
> Information Technology - Industrial Applications
> phone ++41 (0)31 330 64 37 / 330 57 21
> fax ++41 (0)31 330 52 04
> mailto:[EMAIL PROTECTED]
> 
> 
-- 
http://www.superlinksoftware.com
http://jakarta.apache.org/poi - port of Excel/Word/OLE 2 Compound
Document 
                            format to java
http://developer.java.sun.com/developer/bugParade/bugs/4487555.html 
                        - fix java generics!
The avalanche has already started. It is too late for the pebbles to
vote.
-Ambassador Kosh

Reply via email to