2012-01-23 17 views
11

Chcę przechowywać dane liczbowe w arkuszu programu Excel.
Dane liczbowe są reprezentowane przez typ String w moim kodzie java.
Czy można ustawić go jako numeryczny bez rzucania?Ustawianie wartości komórki programu Excel w formacie liczbowym przy użyciu POI

Próbowałem poniższy kod, ale nie przeprowadzono typu liczbowego (dostaję ostrzeżenie w programie Excel mówiąc, że numer jest zapisany jako tekst ...)

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

nie jest przeciążona metoda setCellValue do wsparcia innych rodzajów, czyli nie może przekazujesz float lub coś w tej metodzie? Aktualnie przekazujesz ciąg znaków. – mydoghasworms

+0

Tak, mogę zdać dowolny typ. Zapytałem, czy można przekazać wartość AS String i automatycznie przekonwertować go na wymagany typ. – omrid

+0

zobacz: [wprowadź opis linku tutaj] [1] [1]: http: // stackoverflow.com/questions/5335285/write-number-in-excel-cell-with-poi –

Odpowiedz

20

Musisz podać wartość jako podwójne. Jako the doc says:

setCellValue

public void setCellValue(double value)

ustawić wartość liczbową dla komórki

Parametry:

wartości - wartość liczbowa ustawić ta komórka do. W przypadku formuł ustawimy wstępnie obliczoną wartość , dla liczb ustalimy jej wartość. Dla innych typów zmienimy komórkę na komórkę numeryczną i ustawimy jej wartość.

Tak powinno być

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

LUB

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

, więc muszę ustawić wartość w wymaganym typie? nie może być "automatycznie konwertowane" z String? – omrid

+2

Nie, po prostu użyj tego, co powiedziałem lub dCell.setCellValue (123). Pamiętaj, że nie ma żadnych cudzysłowów, co spowoduje, że będzie to ciąg znaków. (co tak naprawdę zrobiłeś) –

2

spróbuje użyć otoki klasy:

dCell.setCellValue(new Double(112.45)); 

BTW, to będzie działać, jeśli po prostu podać wartość zamiast podwójnych Cotes następująco:

dCell.setCellValue(112.45); 
7

Użyłem do tego dziesiątego dziesiętnego,

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

Dziękuję. Szukałem też konwersji Wielkich cyfr po przecinku. – ramakrishnan

1

stary ale wciąż będzie to pomóc ktoś z .NET, którzy korzystają NPOI

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

Mamy mieć

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

który nie usuwa ostrzeżenie, ale 1. kod nie działał po konwersji do Double dla wszystkich liczb całkowitych i wartości podwójnymi w .NET

Powiązane problemy