2

JavaでExcelファイルを編集する方法があるかどうか知りたいのですが。例:Excelシートを入力している場合、他のセルの値を残したまま、特定のセルの値を変更できますか?前もって感謝します

4

6 に答える 6

4

I have some decent results with the Apache POI library: http://poi.apache.org/

It even works on Android.

于 2012-09-25T09:58:49.563 に答える
4

JXL読み取り効率を高めるように設計されています (これが API の主な用途であるため)。パフォーマンスを向上させるために、出力情報に関連するデータ (たとえば、フォントなどのすべての書式設定情報) は、スプレッドシートの読み取り時に解釈されません。

ただし、このスプレッドシートを変更する必要がある場合は、copy メソッドを使用して取得できるさまざまな書き込みインターフェイスへのハンドルが必要です。

Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
WritableWorkbook copy = Workbook.createWorkbook(new File("temp.xls"), workbook);

これにより、既に読み込まれた情報がコピーされ、スプレッドシートの書き込みに必要なフィールドを解釈するための追加処理が実行されます。この読み取り最適化戦略の欠点は、1 つだけではなく 2 つのスプレッドシートがメモリに保持されるため、メモリ要件が 2 倍になることです。

しかし、この後は、やりたいことが何でもできます。お気に入り:

WritableSheet sheet2 = copy.getSheet(1); 
WritableCell cell = sheet2.getWritableCell(1, 2); 

if (cell.getType() == CellType.LABEL) 
{ 
  Label l = (Label) cell; 
  l.setString("modified cell"); 
}
copy.write(); 
copy.close();
workbook.close();
于 2012-09-25T09:59:53.730 に答える
3

はい、Andy Khan のJExcelライブラリを使えばうまくできます。

于 2012-09-25T09:56:56.647 に答える
1

はい、ApachePOIAPIを使用してExcelシートを編集できます

于 2012-09-25T09:57:34.803 に答える
0

これを行うには何らかのユーティリティを作成する必要がありますが、JXL で行うことができます。

SheetCopier.java、L996+997 にバグがあることに注意してください: 間違っています:

    if (c.getCellFeatures() != null &
        c.getCellFeatures().hasDataValidation())

次のようにする必要があります。

    if (c.getCellFeatures() != null &&
        c.getCellFeatures().hasDataValidation())

Andy Khans の電子メールを持っていないので、彼に連絡できません。ソースも再構築してください。

補足として、Apache poi は定命の者にとってはあまりにも複雑で、クラス名はばかげています。私の経験では、Apache コードは友好的ではなく、役に立たず、堅牢ではありません。だから私は可能な限りApacheを避けます。

于 2013-01-16T23:25:55.467 に答える
0

JXLを使用してこれを行うことができます

JXL は同じファイルを読み書きする直接的な方法を提供しません (不便に思えるかもしれませんが、JXL は、これは読み取りが主な機能 (ほとんどの場合使用される) であり、これによりパフォーマンスが向上するためであると述べています。私自身のワークブック)

import java.io.File; 
import java.util.Date; 
import jxl.*; 
import jxl.write.*; 

//open read to your workbook (readonly)
Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));

//create a copy workbook on which you will write
WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"), workbook);

//modify existing cell 
WritableSheet sheet2 = copy.getSheet(1); 
WritableCell cell = sheet2.getWritableCell(2, 4); 

NumberFormat fivedps = new NumberFormat("#.#####"); 
WritableCellFormat cellFormat = new WritableCellFormat(fivedps); 
cell.setFormat(cellFormat);

//add cells 
Label label = new Label(0, 2, "New label record"); 
sheet2.addCell(label); 

Number number = new Number(3, 4, 3.1459); 
sheet2.addCell(number);
于 2012-09-25T10:12:20.930 に答える