Appending data in an Excel file

2020-02-01 16:29发布

问题:

I am trying to write a program that will append data to an Excel file in Java. I got up to the following code. But it rewrites the contents in the Excel file, not appending to it. Please help me to complete this.

public class jExcel
{
    static WritableWorkbook workbook;
    public static void main(String args[])throws Exception
    {
        workbook = Workbook.createWorkbook((new File("D:\\0077\\my2.xls")));
        WritableSheet sheet = workbook.createSheet("First Sheett",1);
        Label label = new Label(5,2,"ssssssssss");
        sheet.addCell(label);
        workbook.write();
        workbook.close();
    }
}

回答1:

//WRITE IN XLS

    WritableWorkbook workbook = Workbook.createWorkbook(new File("D:\\output.xls"));
    WritableSheet sheet = workbook.createSheet("First Sheet", 0);
    Label label = new Label(0, 2, "A label record"); 
    sheet.addCell(label);
    workbook.write(); 
    workbook.close();

    //MODIFY XLS

    Workbook workbook1 = Workbook.getWorkbook(new File("D:\\output.xls"));
    WritableWorkbook copy = Workbook.createWorkbook(new File("D:\\output.xls"), workbook1);
    WritableSheet sheet2 = copy.getSheet(0); 
    //WritableCell cell = sheet2.getWritableCell(5, 2); 

    copy.write();
    copy.close();


回答2:

Instead of using createWorkbook use "getWorkbook(java.io.File file) " to get an existing Excel. Then use getSheet(int index) to retrieve the appropriate sheet.

To the sheet you retrieved above use "addCell(WritableCell cell) " to append cells to the sheet.

Workbook workbook = Workbook.getWorkbook(new File(""D:\\0077\\my2.xls""));
WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"), workbook);
WritableSheet sheet2 = copy.getSheet(1); 
Label label = new Label(5,2,"ssssssssss"); 
sheet2.addCell(label); 

You will find a lot of examples here. http://www.andykhan.com/jexcelapi/tutorial.html



回答3:

After opening the workbook from file, do like this:

WritableWorkbook copy = Workbook.createWorkbook(
   new File(""D:\\0077\\my2_copy.xls""), 
   workbook
);

You will get a copy of the workbook opened. Do the changes you need in that copy and save it instead.