Modifying existing excel using jxl

Viewed 41395

I m not able to edit the existing excel sheet using jxl. It always creates a new one. Can anyone please help me out with it. Please give a small sample code.

4 Answers

I personally use this code to append the xls file and create one if it doesn't exist.
Using jxl 2.6:

    public class Excel {

        private String fileName = "excel_file.xls";
        private String sheetName = "sheet1";
        private WritableWorkbook writableWorkbook;
        private int rowCount;
        private Workbook wb;

// assigns checks if file exists or not, both cases we assign it to a WritableWorkbook // object so that we can write to it.
        private void assignWorkBook() throws IOException, BiffException {
    //        File f = new File(System.getProperty("user.dir") +"\\"+fileName);
            File inp = new File(fileName);
            try{
                wb = Workbook.getWorkbook(inp);
                writableWorkbook = Workbook.createWorkbook(inp, wb);
            } catch (FileNotFoundException e){
                writableWorkbook = Workbook.createWorkbook(inp); //Create a new one
            }
        }

        public int getRowCount() {
            return rowCount;
        }

// this function writes a vector to an excel file, checks if there is already a sheet 
// with that name or not, and uses it. then we have to close the Workbook object before 
// we could write to the file, and then we save the file.
// That is, the file is always saved after writing to it.

        public void writeRow(Vector<String> playerVector) throws WriteException, IOException, BiffException {
            assignWorkBook();
            WritableSheet excelSheet;
            if(writableWorkbook.getNumberOfSheets() == 0) {
                excelSheet = writableWorkbook.createSheet(sheetName, 0);
            }
            else {
                excelSheet = writableWorkbook.getSheet(sheetName);
            }
            rowCount = excelSheet.getRows();
            int colCount = 0;
            for(String playerStat:playerVector) {
                Label label = new Label(colCount++, rowCount, playerStat);
                excelSheet.addCell(label);
            }
            if(wb != null) {
                wb.close();
            }
            writableWorkbook.write();
            writableWorkbook.close(); //everytime save it.
        }
    }
Related