2

クエリがあります。データを含む多くの列を含む Excel シートを生成しました。現在、abc_ID という名前の列があり、バックエンドからの値は以下に示すように long 型です。

//shown below how the value is passed for that column
private Long abc_Id;
abcdeed.abc_Id(13243534540L);

HSSFCellStyle[] cellStyles = new HSSFCellStyle[11];
    HSSFCellStyle styleHeader = null;
    HSSFCellStyle styleHeaderRBorder = null;
    HSSFCellStyle cellStyleReportName = null;
    HSSFCellStyle cellStyle00 = null;
    HSSFCellStyle style_WhiteBg = null;

abc_ID列の次のセルスタイルを設定しました

if(columnHeaders[i].equals("abc_Id") && abcdeed.getabc_Id() != null){
                    cell.setCellValue(abcdeed.getabc_Id());
                    cell.setCellStyle(cellStyles[9]);

問題は、最終的にExcelシートが生成され、最初にそのExcelシートを開くと、列abc_Idの値が圧縮されているように見え、その値は最初は指数型であり、列が圧縮型であるため、列が必要です幅は 1 に拡張する必要があり、値は指数型であってはなりません。cellStyles を増やそうとしましたが、機能しません。解決策を提案してください。

4

2 に答える 2

1

その特定のセルのすべての行で CELL_TYPE_STRING を使用します。

 rows.getCell(abc_Id_Cell_No).setCellType(Cell.CELL_TYPE_STRING);

そして最後に

 Sheet.autoSizeColumn(abc_Id_Cell_No);

これにより、すべてのセル値が文字列に変更され、autoSizeColumn によってその列幅が変更されます。

于 2013-07-03T06:36:51.060 に答える
0

セルが指数を表示している理由は、セルの幅とは関係ありません。セルに入れている値のタイプと関係があります。

数値が文字列として入力された場合、セルは値全体を非表示にする可能性がありますが、完全な値はセル内に存在します。

値は数値であるため、小数点以下に表示する桁数が表示されるように、セルの数値形式パラメーターを編集する必要があります。参考として、有効な数値形式コードを確認できます。

于 2013-07-03T04:51:06.043 に答える