0

私はこの簡単なプログラムを書きました:

public class WriteExcel {

    private WritableCellFormat timesBoldUnderline;
    private WritableCellFormat times;
    private String inputFile;

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, 0, "Header 1");
    addCaption(sheet, 1, 0, "This is another header");

}

private void createContent(WritableSheet sheet) throws WriteException,
        RowsExceededException {
    // Write a few number
    for (int i = 1; i < 10; i++) {
        // First column
        addNumber(sheet, 0, i, i + 10);
        // Second column
        addNumber(sheet, 1, i, i * i);
    }
    // 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 = 12; i < 20; i++) {
        // First column
        addLabel(sheet, 0, i, "Boring text " + i);
        // Second column
        addLabel(sheet, 1, i, "Another text");
    }
}

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 static void main(String[] args) throws WriteException, IOException {
    WriteExcel test = new WriteExcel();
    test.setOutputFile("C:/Users/test/Desktop/Output");
    test.write();
    System.out.println("Please check the result file!");
}

}

プログラムを実行すると、次のようになります。

Exception in thread "main" java.io.FileNotFoundException: C:\Users\test\Desktop\Output (Access denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:145)
    at jxl.Workbook.createWorkbook(Workbook.java:301)
    at excelProcessor.WriteExcel.write(WriteExcel.java:37)
    at excelProcessor.WriteExcel.main(WriteExcel.java:126)

私の問題は、ファイルを出力できないことです。私がそうすると、この例外が発生します。私はwin 7EclipseJuno Service Release 2JDK 1.6. また、管理者としてEclipseを開始しようとしましたが、機能しません。

私は本当にあなたの答えをいただければ幸いです!

アップデート

ここで私の例外点:

WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);

でも、何を変えればいいのかわからない…

4

1 に答える 1

2

次のことを試してください。

  • 同様の名前の Excel ワークブック (出力) が閉じていることを確認します (一度に 1 つの一意のファイル名しか開かないという Excel の制限を回避します)。最善の方法として、Excel を閉じてください。

  • .xls 拡張子を追加してみてください:

    test.setOutputFile("C:/Users/test/Desktop/Output.xls");
    
  • 転送パスを削除して、ファイル名だけを使用してみてください。

    test.setOutputFile("Output.xls");  //should go to your project root
    
于 2013-10-08T16:44:29.240 に答える