2017-01-03 5 views
1

Я создаю лист excel, используя apache poi. У меня есть цифры вроде - 337499.939437217, которые я хочу показать, так как он находится в excel без округления. Также формат ячейки должен быть числом (для некоторых столбцов) и валютой (для некоторых столбцов).Номер и ячейка Форматирование в apache poi

Просьба указать, какие встроенные форматы следует использовать для достижения этой цели.

Большое спасибо за помощь.

ответ

3

Сначала вы должны знать, как использовать DataFormats. Тогда вам нужно знать guidelines for customizing a number format.

Для вашего номера -337499.939437217, который будет отображаться округленным с общим цифровым форматом, вы можете использовать формат #.###############. # означает цифру, которая будет отображаться только при необходимости (не ведет ноль и/или не равна нулю как последняя десятичная цифра) - см. Рекомендации. Таким образом, весь формат означает наличие до 15 десятичных цифр, если необходимо, но только столько, сколько необходимо.

Для валюты вы действительно должны использовать встроенный формат чисел для валюты. Таким образом, символ валюты зависит от настроек локали Excel. Следующие BuiltinFormats могут использоваться с apache poi. Используя встроенный формат чисел, вам нужны только шестнадцатеричные числа.

Пример:

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(); 
} 
} 
Смежные вопросы