2014-12-10 18 views
6

Tôi muốn định dạng một số ô số, bằng dấu phẩy làm dấu phân cách hàng nghìn. Ví dụ:Số định dạng bằng dấu phân cách hàng nghìn trong Excel bằng cách sử dụng Apache POI

12  -> 12 
1200  -> 1,200 
12000  -> 12,000 
12000000 -> 12,000,000 
120000000 -> 120,000,000 

Tôi có mã sau đây. Tôi nên sử dụng số nào là formatStr? Có đường nào dễ đi không? Hay tôi phải phát hiện số 0 để tạo ra thứ gì đó như thế này #,###,###?

String formatStr = ""; 
HSSFCellStyle style = workbook.createCellStyle(); 
HSSFDataFormat format = workbook.createDataFormat(); 
style.setDataFormat(format.getFormat(formatStr)); 
cell.setCellStyle(style); 
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); 

Hãy nhớ rằng tôi đang xử lý các con số. Loại ô sẽ là số, không phải chuỗi.

Cập nhật

enter image description here

Trả lời

7

Chỉ #,### hay #,##0 nên là đủ. Excel giải thích điều này khi có hàng nghìn dấu phân cách mỗi ba chữ số (không chỉ trước ba chữ số cuối cùng mà tôi phỏng đoán là những gì bạn mong đợi).

enter image description here

Với tinh thần giảng dạy một người đàn ông cá, đây là cách bạn có thể tìm ra cho chính mình:

Format như Number, 0 chữ số thập phân, với 1000 separator:

enter image description here

Nhấp vào OK, sau đó mở lại hộp thoại định dạng số và chuyển đến Tùy chỉnh. Hãy xem mã định dạng ("Loại"). Nó cho biết #,##0, mà tôi cho kết quả chính xác giống như #,###.

enter image description here

+0

Đó là chính xác những gì tôi muốn, nhưng khi tôi thử điều này trong excel tôi nhận được '1200, '. Ngay cả khi tôi đã thử ví dụ số của bạn, hành vi tương tự vẫn còn (đó là lẻ). Tôi sẽ thử nó trong mã java của tôi và quay trở lại. Vui lòng kiểm tra bản cập nhật của tôi để có ảnh chụp màn hình (có thể tôi đang làm gì đó sai). Chỉ cần upvoted cho bây giờ. – alkis

+0

Lạ. Cài đặt vùng Excel? ... Hãy xem câu trả lời mở rộng của tôi. Điều này có giúp bạn tiến gần hơn không? –

+0

Ok bây giờ tôi hiểu. Phần thứ hai giải quyết nó cho tôi, kể từ khi tôi tìm kiếm với các từ khóa "nghìn seperator" và điều này đã đưa ra http://stackoverflow.com/questions/14876548/apache-poi-thousand-separator. Chấp nhận tất nhiên. Xin đừng nghĩ rằng tôi lười biếng, tôi đã tìm kiếm câu trả lời hiện có nhưng không phải với từ khóa chính xác. – alkis

5

Chỉ cần thêm này:

style.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00")); 

và nó sẽ theo các định dạng mà bạn có thể tham khảo want.You this link để có được thiết lập định dạng hơn.

Các vấn đề liên quan