2012-01-23 75 views
11

Tôi muốn lưu trữ dữ liệu số trong bảng excel.
Dữ liệu số được biểu thị bằng loại Chuỗi trong mã java của tôi.
Có thể đặt số đó làm số mà không truyền không?Đặt giá trị ô Excel ở định dạng số bằng cách sử dụng POI

Tôi đã thử đoạn code sau, nhưng nó đã không được chuyển đổi sang kiểu số (tôi nhận được một cảnh báo trong excel nói con số đó được lưu trữ dưới dạng văn bản ...)

HSSFCell dCell =... 
dCell.setCellType(Cell.CELL_TYPE_NUMERIC); 
dCell.setCellValue("112.45") 
+0

Không phải là phương pháp setCellValue quá tải để hỗ trợ các loại khác, tức là không thể bạn vượt qua một phao hoặc một cái gì đó vào phương pháp đó? Bạn hiện đang chuyển một chuỗi. – mydoghasworms

+0

Có, tôi có thể chuyển bất kỳ loại nào. Tôi hỏi nếu nó có thể vượt qua giá trị AS String và tự động chuyển đổi nó thành loại cần thiết. – omrid

+0

thấy điều này: [nhập mô tả liên kết tại đây] [1] [1]: http: // stackoverflow.com/questions/5335285/write-number-in-excel-cell-with-poi –

Trả lời

20

Bạn phải cung cấp giá trị gấp đôi. Như the doc says:

setCellValue

public void setCellValue(double value)

thiết lập một giá trị số cho các tế bào

thông số:

giá trị - giá trị số để thiết lập ô này. Đối với công thức, chúng tôi sẽ đặt giá trị được tính toán là , cho số, chúng tôi sẽ đặt giá trị của nó. Đối với các loại khác , chúng tôi sẽ thay đổi ô thành ô số và đặt giá trị của ô.

Vì vậy, nó phải là

dCell.setCellValue(new Double("123")); 

HOẶC

dCell.setCellValue(123); //Remember, the way you did was, you actually passed a string (no quotes) 
+1

vì vậy tôi phải đặt giá trị theo loại cần thiết? nó không thể được "tự động chuyển đổi" từ chuỗi? – omrid

+2

Không, chỉ cần sử dụng những gì tôi đã nói hoặc dCell.setCellValue (123). Hãy nhớ rằng, không có dấu ngoặc kép hoặc nó sẽ làm cho nó một chuỗi. (mà bạn thực sự đã làm) –

2

Cố gắng sử dụng wrapper lớp:

dCell.setCellValue(new Double(112.45)); 

BTW, nó sẽ làm việc nếu bạn chỉ đơn giản là cung cấp cho các giá trị thay vì Cotes đôi như sau:

dCell.setCellValue(112.45); 
7

Tôi đã sử dụng Số thập phân lớn cho điều này,

dCell.setCellValue(new BigDecimal("112.45").doubleValue()); 
+0

Cảm ơn bạn. Tôi cũng đang tìm kiếm chuyển đổi thập phân lớn. – ramakrishnan

1

Old một nhưng vẫn còn đó Điều này sẽ giúp Một số một từ NET người sử dụng NPOI

dCell.setCellValue(Convert.ToDouble(112.45)); 

Chúng tôi có

cell.SetCellType(NPOI.SS.UserModel.CellType.NUMERIC); 

mà không loại bỏ các cảnh báo nhưng mã 1st đã làm việc sau khi chuyển đổi để đôi cho tất cả các số nguyên và các giá trị đúp trong .net

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