Just to expand a little on Chris's reply, when you are reading data from the sheet, the correct way to use the HSSFDataFormatter class is something like this;
HSSFDataFormatter formatter = new HSSFDataFormatter(); HSSFWorkbok workbook = new HSSFWorkbook........... HSSFSheet sheet = workbook.getSheet(0); HSSFRow row = sheet.getRow(0); HSSFCell cell = row.getCell(0); System.out.println(formatter.formatCellValue(cell)); That way, the HSSFDataFormatter should use the cell style the user applied to the cell when the created the workbook/worksheet and you ought to see what you expect output to the screen. Yours Mark B ChrisLott wrote: > > Please don't assume that the view shown on the screen is a close match > to the data stored internally! M$FT-Excel stores all numeric data as > floating-point numbers. Then it applies suitable formatting and other > rules when it displays to you. Working in POI you see the raw internal > data. Storing and reading date/time values is a particular joy! > > Re character encoding: POI has cell encoding features, and copes with > UTF-8 and UTF-16. Java is perfectly capable of dealing with special > characters. You don't mention where on Linux the data is "converted to > question marks". Did you use an IDE like Eclipse and view the data > right there immediately when it's read? Also search Nabble for UTF-8 > and encoding. I got this hit: > > http://old.nabble.com/how-to-read-unicode-data-from-xls-sheet-td13601249.html#a13604018 > > chris... > > p.s. Gruess aus New Jersey! > > > Felix Dreher wrote: >> Hi all, >> >> I'm trying to read Excel files (classes HSSFWorkbook, HSSFSheet, >> HSSFCell etc.). There are two issues that I'm currently struggling with: >> >> 1) non-ASCII characters like é or ü are read correctly on Windows, but >> not on Linux (where these characters are all converted to question >> marks). I tried to use the "Locale.setDefault(myLocale)" method, but >> with no success. >> >> 2) The tables I would like to read contain lots of whole numbers, which >> I would like to treat as strings because they are IDs or order numbers >> (i.e. I would like to simply read all cells in the same way as Excel >> displays them). However, they get read as decimal numbers, e.g. the >> number 1234 in an Excel table (formatted as 'General') becomes 1234.0 in >> its POI representation. >> I tried two workarounds, but they didn't work: >> a) open the Excel file, format all cells as Text, save. >> b) use the HSSFDataFormatter class to define a 'Decimal format' with >> actually no decimals (e.g. DecimalFormat df = new DecimalFormat ("#")) >> >> Any help would be greatly appreciated! >> >> Thank you very much, >> Felix > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > > -- View this message in context: http://old.nabble.com/Reading-Excel-files%3A-character-encoding---whole-number-issues-tp26494243p26495141.html Sent from the POI - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
