2017-01-03 22 views
1

私はapache poiを使ってExcelシートを作成しています。私は337499.939437217のような数字を持っていますが、これは四捨五入せずにExcelで表示したいものです。また、セルの書式は、数値(一部の列の場合)と通貨(一部の列の場合)にする必要があります。番号とセルの書式設定apache poi

これを達成するためにはどの組み込み用フォーマットを使用するべきかをお勧めします。

多くのご協力ありがとうございます。

答えて

3

まず、DataFormatsの使い方を知る必要があります。次に、guidelines for customizing a number formatを知る必要があります。

-337499.939437217は、一般番号形式で丸められて表示されます。形式は#.###############です。 #は、必要な場合にのみ表示される桁を意味します(ゼロを先行していないか、または最後の10進数字としてゼロではありません)。したがって、フォーマット全体は、必要に応じて最大15桁の数字を表示することを意味しますが、必要な数だけ表示されます。

通貨の場合、実際に通貨のための組み込みの数値書式を使用する必要があります。したがって、通貨記号はロケール設定Excelによって異なります。 apache poiには、BuiltinFormatsがあります。組み込みの数値書式を使用する場合は、16進数の書式番号のみが必要です。

例:

import java.io.*; 

import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

public class CreateNumberFormats { 

public static void main(String[] args) throws Exception { 
    Workbook wb = new XSSFWorkbook(); 

    Sheet sheet = wb.createSheet("format sheet"); 
    CellStyle style; 
    DataFormat format = wb.createDataFormat(); 
    Row row; 
    Cell cell; 
    short rowNum = 0; 
    short colNum = 0; 

    row = sheet.createRow(rowNum++); 
    cell = row.createCell(colNum); 
    cell.setCellValue(-337499.939437217); // general format 

    style = wb.createCellStyle(); 
    style.setDataFormat(format.getFormat("#.###############")); // custom number format 
    row = sheet.createRow(rowNum++); 
    cell = row.createCell(colNum); 
    cell.setCellValue(-337499.939437217); 
    cell.setCellStyle(style); 
    row = sheet.createRow(rowNum++); 
    cell = row.createCell(colNum); 
    cell.setCellValue(123.456789); 
    cell.setCellStyle(style); 
    row = sheet.createRow(rowNum++); 
    cell = row.createCell(colNum); 
    cell.setCellValue(123456789.); 
    cell.setCellStyle(style); 

    style = wb.createCellStyle(); 
    style.setDataFormat((short)0x7); // builtin currency format 
    row = sheet.createRow(rowNum++); 
    cell = row.createCell(colNum); 
    cell.setCellValue(-1234.5678); 
    cell.setCellStyle(style); 

    sheet.autoSizeColumn(0); 

    FileOutputStream fileOut = new FileOutputStream("CreateNumberFormats.xlsx"); 
    wb.write(fileOut); 
    fileOut.close(); 
    wb.close(); 
} 
} 
関連する問題