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