4

Excel スプレッドシートから値を読み取り、ユーザーが変更してアプリケーションに再アップロードできるようにスプレッドシートを作成する必要があります。これらのセルの 1 つには、文字、数字、またはその両方の組み合わせである 5 文字のテキスト文字列が含まれています。これらの文字列の一部は数字のみを含み、ゼロで始まります。このため、セルの種類はテキストです。ただし、Apache POI または JExcel を使用してスプレッドシートにデータを入力し、ユーザーが変更できるようにすると、セル タイプは常に [一般] に設定されます。

これらのライブラリのいずれか、またはまだ見たことのない他のExcel APIを使用して、セルのタイプがテキストであることを指定する方法はありますか?

4

2 に答える 2

8

私の同僚は、これを達成する方法を見つけました。JExcel では、次のような WritableCellFormat を使用して実現できます。

WritableCellFormat numberAsTextFormat = new WritableCellFormat(NumberFormats.TEXT);

次に、シートに追加するセルを作成するときに、通常どおりフォーマットを渡すだけです。

Label l = new Label(0, 0, stringVal, numberAsTextFormat);

Apache POI を使用している場合は、HSSFCellStyle を作成し、次のようにデータ形式を設定します。

HSSFCellStyle style = book.createCellStyle();
style.setDataFormat(BuiltInFormats.getBuiltInFormat("text"));
于 2012-05-23T16:54:14.277 に答える
2

タイプ(フォーマット)がテキスト(文字列)のセルにユーザーが数値を入力すると、表計算ソフトウェア(openofficeまたはmsoffice)が自動的にフォーマットを変更することがよくあります。私はApache poiを使用していますが、これが私のコードを書いた方法です:

cell = row.getCell(); 
switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_STRING:
    value = cell.getRichStringCellValue().getString();
    break;
case HSSFCell.CELL_TYPE_NUMERIC:
    // if cell fomratting or cell data is Numeric
    // Read numeric value
    // suppose user enters 0123456 (which is string), in numeric way it is read as 123456.0
    // Now I want ot read string and I got number...Problem?????

    //well this is the solution
    cell.setCellType(Cell.CELL_TYPE_STRING);   // set cell type string, so it will retain original value "0123456"
    value = cell.getRichStringCellValue().getString(); // value read is now "0123456"    
    break;
default:
}
于 2012-05-29T07:05:17.773 に答える