0

Excelファイルを読み込んでデータベースに保存しています。

各行とセルを反復してベクトル オブジェクトに保存し、ループを使用してデータベースに保存しています。データベースに保存している間、これを行っています:

id = ((XSSFCell) cellStoreVector.get(0)).toString()==null?"":((XSSFCell) cellStoreVector.get(0)).toString();

列ごとに。IDとして2.01356229E8を取得しているこの1つを除いて、他のすべては問題ありません。ID に 2.01356229E8 が含まれている理由がわかりません。この 201356229 のようになるはずです。

ありがとうございました。

4

2 に答える 2

1

Apache POI を使用して値が Java に既に抽出されているため、これは Excel の表示の問題ではありません。しかし、XSSFCell#toString()が呼び出されると、Apache POI コードは次の式を使用して、タイプのセルをCELL_TYPE_NUMERICの文字列に変換しtoString()ます。

return getNumericCellValue() + "";

このXSSFCell#getNumericCellValue()メソッドは を返します。doubleこれを文字列に変換すると、文字列 が生成されます"2.01356229E8"。は の指数表記表現であるため、これは Java で期待される a から adoubleへの変換です。(数学では、表現とは同等です。)String"2.01356229E8"2013562292013562292.01356229E8

保存先の Oracle データベースの列が の場合は、VARCHAR2データベースに保存する前に文字列値をフォーマットする必要があります。これは次の場所に保存"201356229"されidます:

DecimalFormat df = new DecimalFormat("#");
id = df.format( ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue() );

列が の場合、NUMBER最初に文字列に変換する必要はありません。セルの数値を として使用doubleして、データベースに渡します。

double numericId = ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue();
于 2013-04-09T17:59:16.140 に答える