Сначала вы должны знать, как использовать 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();
}
}