user2459338
user2459338

Reputation: 21

write to excel in java with Java Excel library -can't open file

I use jxl to write in the following way:

WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls"));

WritableSheet sheet = workbook.createSheet("First Sheet", 0);

Label label = new Label(0, 2, "A label record"); 
sheet.addCell(label); 

Number number = new Number(3, 4, 3.1459); 
sheet.addCell(number);

When I try to open the file I get the error:

the file you are trying to open is in deiffernt format than specifies by the extension. verify that the file is not corrupted and is from a trusted sourch before openning the file. Do you want to open the file now?

When I click yes, it is empty.

Upvotes: 0

Views: 3268

Answers (2)

Mayank Tiwari
Mayank Tiwari

Reputation: 3020

i can not say about your code but if you want to write data to excel file then you can use this particular code, i have used it more than 1000 times,

import java.io.File;
import java.io.IOException;
import java.util.Locale;

import jxl.CellView;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.UnderlineStyle;
import jxl.write.Formula;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class WriteExcel {

    private WritableCellFormat timesBoldUnderline;
    private WritableCellFormat times;
    private String inputFile;
    private String[][] contentD;
    private int value;

    public void setOutputFile(String inputFile) {
        this.inputFile = inputFile;
    }

    public void write() throws IOException, WriteException {
        File file = new File(inputFile);
        WorkbookSettings wbSettings = new WorkbookSettings();

        wbSettings.setLocale(new Locale("en", "EN"));

        WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);
        workbook.createSheet("Report", 0);
        WritableSheet excelSheet = workbook.getSheet(0);
        createLabel(excelSheet);
        createContent(excelSheet);

        workbook.write();
        workbook.close();
    }

    private void createLabel(WritableSheet sheet)
            throws WriteException {
        // Lets create a times font
        WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10);
        // Define the cell format
        times = new WritableCellFormat(times10pt);
        // Lets automatically wrap the cells
        times.setWrap(true);

        // Create create a bold font with unterlines
        WritableFont times10ptBoldUnderline = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, false,
                UnderlineStyle.SINGLE);
        timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
        // Lets automatically wrap the cells
        timesBoldUnderline.setWrap(true);

        CellView cv = new CellView();
        cv.setFormat(times);
        cv.setFormat(timesBoldUnderline);
        //cv.setAutosize(true);

        // Write a few headers
        addCaption(sheet, 0, 1, "Images");
        addCaption(sheet, 2, 1, "XXXXXXXX");


    }

    private void createContent(WritableSheet sheet) throws WriteException,
            RowsExceededException {
        // Lets calculate the sum of it
        StringBuffer buf = new StringBuffer();
        buf.append("SUM(A2:A10)");
        Formula f = new Formula(0, 10, buf.toString());
        sheet.addCell(f);
        buf = new StringBuffer();
        buf.append("SUM(B2:B10)");
        f = new Formula(1, 10, buf.toString());
        sheet.addCell(f);

        // Now a bit of text
        for (int i = 0; i < contentD.length; i++) {
            for (int j = 0; j < contentD[0].length; j++) {
                // First column
                addLabel(sheet, j, i + 2, contentD[i][j]);
            }
        }
    }

    private void addCaption(WritableSheet sheet, int column, int row, String s)
            throws RowsExceededException, WriteException {
        Label label;
        label = new Label(column, row, s, timesBoldUnderline);
        sheet.addCell(label);
    }

    private void addNumber(WritableSheet sheet, int column, int row,
            Integer integer) throws WriteException, RowsExceededException {
        Number number;
        number = new Number(column, row, integer, times);
        sheet.addCell(number);
    }

    private void addLabel(WritableSheet sheet, int column, int row, String s)
            throws WriteException, RowsExceededException {
        Label label;
        label = new Label(column, row, s, times);
        sheet.addCell(label);
    }

    public WriteExcel(String fileName, String[][] content) throws WriteException, IOException {
        contentD = content;
        setOutputFile(fileName);
        write();
        System.out.println("Please check the result file under c:/temp/lars.xls ");
    }
}

Call it like that,

WriteExcel writeExcel = new WriteExcel("d:\res.xls", contentData);

where contentData is a 2-D array having data for excel sheet.

Upvotes: 0

vineet
vineet

Reputation: 336

You need to add following statements:

workbook.write(); 
workbook.close();

Upvotes: 3

Related Questions