2012-03-11 22 views
5

jxlを使用してExcelファイルを作成しています。最初はスタイルに関する書式と情報のみを含むべきです。その後、誰かが新しいデータを追加するたびに更新する必要があります。jxlを使用してExcelファイルにデータを追加する

class Modify { 

    private static Logger logger = Logger.getLogger(Modify.class); 
    private File inputWorkbook; 
    private File outputWorkbook; 

    public Modify(String input, String output) { 
     inputWorkbook = new File(input); 
     outputWorkbook = new File(output); 
     logger.info("Input file: " + input); 
     logger.info("Output file: " + output); 
    } 

    public void readWrite() throws IOException, BiffException, WriteException { 
     logger.info("Reading..."); 
     Workbook w1 = Workbook.getWorkbook(inputWorkbook); 

     logger.info("Copying..."); 
     WritableWorkbook w2 = Workbook.createWorkbook(outputWorkbook, w1); 

     if (inputWorkbook.getName().equals("test.xls")) { 
      modify(w2); 
     } 

     w2.write(); 
     w2.close(); 
     logger.info("Done"); 
    } 

    private void modify(WritableWorkbook w) throws WriteException { 
     logger.info("Modifying..."); 

     WritableSheet sheet = w.getSheet("First"); 

     //createContent(sheet); // contains methods responsible for adding data, for example: 
     addNumber(sheet, cols, rows, 2); 

    private static void addNumber(WritableSheet sheet, int column, int row, double d) throws WriteException, RowsExceededException { 
     Number number; 
     number = new Number(column, row, d, timesStandard); 
     sheet.addCell(number); 

    } 
} 

しかし、私は唯一の結合されたセルと空白のExcelファイルで終わる:

public class WriteExcel { 

    private static WritableWorkbook workbook; 
    private static WritableCellFormat timesStandard; 
    private String inputFile; 
    final private static int FONT_SIZE = 12; 


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

    private void prepareSheet(WritableSheet sheet) throws WriteException { 
     sheet.mergeCells(0, 0, 1, 0); 
     sheet.mergeCells(3, 0, 4, 0); 
     sheet.mergeCells(6, 0, 7, 0); 

     WritableFont times12pt = new WritableFont(WritableFont.TIMES, FONT_SIZE); 
     timesStandard = new WritableCellFormat(times12pt); 

     CellView cv = new CellView(); 
     cv.setFormat(timesStandard); 
    } 

    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("First", 0); 
     WritableSheet excelSheet = workbook.getSheet(0); 
     prepareSheet(excelSheet); 

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

    public static void main(String[] args) throws WriteException, IOException { 
     WriteExcel test = new WriteExcel(); 
     test.setOutputFile("c:/Users/H/Desktop/test.xls"); 
     test.write(); 
    } 
} 

私は私が私がファイルにアクセスし、そこにいくつかのデータを追加してみましょうだろう別のクラスが必要であることを理解しています。

どのように修正を導入しますか?

+1

をチェックし、私は[ApacheのPOI](http://poi.apache.org/)に切り替えるだけの推薦ソリューションを持っていません。 – Kai

+1

これは基本操作だけですが、jxlは問題ありません。 – Hurdler

答えて

0

あなたがw2のためにあなたのクラスのメンバーではないWritableWorkbookオブジェクトを操作しているので、あなたのmodify()メソッドを持つべきではありません無効であるが、代わりにWritableWorkbookを返しませんか?

私はそれを見ると、あなたがmodify()を呼び出すときに新しいものがインスタンス化されますが、最後にすべての変更が原因スコープに廃棄されます。最後に

あなたは非常に基本的に

private WritableWorkbook modify(WritableWorkbook w) throws WriteException { 
    logger.info("Modifying..."); 

    WritableSheet sheet = w.getSheet("First"); 

    //createContent(sheet); // contains methods responsible for adding data, for example: 
    addNumber(sheet, cols, rows, 2); 
    return sheet; 
    } 

ような何かを得るでしょう。 addNumberの同様の変更も同様です。 それぞれの呼び出しはsheet = addNumber(sheet, cols, rows, 2);w2 = modify(w2);

0

JExcel APIを使用してJavaでExcelファイルを読み書きする方法です。最初にステップバイステップとしてExcelブックを作成し、さらにシートを作成してシートにコンテンツを追加する必要があります。

WritableWorkbook writableWorkbook = null; 
writableWorkbook = Workbook.createWorkbook(new File("WebSparrow.xls")); 
Workbook wb = null; 
wb = Workbook.getWorkbook(new File("WebSparrow.xls")); 

フル例http://www.websparrow.org/tutorials/java/how-to-read-and-write-excel-file-in-java

関連する問題