1

「科学的」ではなく「一般的な」タイプとして表示されるようにセルを変更するにはどうすればよいですか

問題を引き起こす行は次のとおりですgetPhoneNumber()。文字列を返します

row.createCell(4).setCellValue(c.getPhoneNumber());

電話番号 (文字列) は 4.165551234E9 として表示されます。データは存在しますが、形式が正しくありません。


セル形式を数値に設定しようとしました

row.getCell(4).setCellType(Cell.CELL_TYPE_NUMERIC);

ただし、これにより、10 桁の文字列が 11 ~ 165 の数字として表示されます。つまり、11、16、20、26、13、31、35 です。


また、電話番号を長い形式に解析しようとしました

try {
    row.createCell(4).setCellValue(Long.parseLong(c.getPhoneNumber()));
} catch (NumberFormatException e) {
    row.createCell(4);
}

setCellValue(Long) はありません setCellValue(Double) だけなので、これを処理するには文字列が適切な方法であると思います。

4

4 に答える 4

1

ケースでCELL_TYPE_STRINGを使用して、このように電話番号の値を直接設定できます

row.createCell(4).setCellValue(c.getPhoneNumber()); // since getPhoneNumber returns a String

HSSFCell #setCellTypeは、セル タイプを適切に設定するために、int値を取得するCELL_TYPE_STRINGCELL_TYPE_NUMERIC、POI 自体によって提供されるすべての static int フィールドです。

于 2013-10-08T05:25:14.570 に答える
0

セルの値を取得するときに同じ問題が発生しました。プログラムのセル型をセル型文字列に変更したところ、問題ありませんでした。

于 2014-10-16T17:49:29.187 に答える
0

最初の試みは正しいです:

row.createCell(4).setCellValue(c.getPhoneNumber());

入力の形式が正しくありませんでした。数値型の Cell から文字列の phoneNumber を取得するには、次のように使用します。

String phone = ((long) r.getCell(4).getNumericCellValue()) + "";
于 2013-10-08T05:37:37.883 に答える
0

Apache POI は、Excel とまったく同じように動作しています。非常に長い数値を Excel の既定の書式設定されたセルに入力すると、数値はそのまま保存されますが、指数形式で表示されます。

Excel で行う場合と同じように、セルに書式設定ルールを設定して、Excel に多数の数値を表示するように指示する必要があります。

たとえば、英国の電話番号を正しく表示するには、次の書式文字列でセルを書式設定するように Excel に指示する必要があります。

0###########

または、通常の間隔が必要な場合:

0##### ### ###

後者を仮定すると、私がすることは次のとおりです。

// Do this only once per style
DataFormat df = workbook.createDataFormat()

CellStyle phoneStyle = workbook.createCellStyle();
phoneStyle.setDataFormat( df.getFormat("0##### ### ###") );

....

// Create a cell, set the number, and apply our phone formatting to it
cell.setCellValue(phoneNumber);
cell.setCellStyle(phoneStyle);

または、数値を文字列として保存することもできますが、Excel はそれについて不機嫌になり、数値が文字列として保存されていると不平を言い、それについて警告を発する傾向があります。ただし、スペースやレイアウトなどを完全に制御する機会はあります。

于 2013-10-08T09:26:28.850 に答える