You need to apply a style to the cell. The style can include a number format.

DataFormat format = workbook.createDataFormat();
short fmt = format.getFormat("#0.0");
CellStyle style = workbook.createCellStyle();
style.setDataFormat(fmt);

…
cell.setCellStyle(style);


From: Syed Mudassir Ahmed [mailto:syed.mudas...@gaianconsultants.com]
Sent: Wednesday, May 16, 2018 11:56 PM
To: POI Users List <user@poi.apache.org>
Subject: Re: Is it POI error starting 3.14 version onwards

And one more thing, this is my source code:

public static void main(String str[]) throws Exception {
        Map<String, Object> input = new LinkedHashMap<>();
        SXSSFWorkbook workbook = new SXSSFWorkbook();
        OutputStream os = new FileOutputStream(
                new File("/home/gaian/Desktop/Sal.xlsx"));
        workbook.setCompressTempFiles(true);
        SXSSFSheet sheet = workbook.createSheet("firstSheet");
        SXSSFRow row = sheet.createRow(0);
        SXSSFCell cell = row.createCell(0);
        cell.setCellValue("salary");
        cell.setCellType(CellType.STRING);
        row = sheet.createRow(1);
        cell = row.createCell(0);
        cell.setCellValue(new Double("4.0"));
        cell.setCellType(CellType.NUMERIC);
        workbook.write(os);
        os.close();
        workbook.close();
        System.out.println("done creating excel workbook...");
    }

I am creating a workbook and writing a value (4.0) as double in a sheet.  But 
when I open the sheet, I see the integral value 4 instead of decimal 4.0.

Any settings I need to do in my code to get the value 4.0?

Thanks.

Thanks,
[cid:ii_14fd4e82bb9756bc]

On Thu, May 17, 2018 at 9:07 AM, Syed Mudassir Ahmed 
<syed.mudas...@gaianconsultants.com<mailto:syed.mudas...@gaianconsultants.com>> 
wrote:
Thanks so much Tim and Fanning.  Both of your suggestions are working out.  I 
would suggest better to have such example in the test case section of your 
source folder.

Thanks,
[cid:ii_14fd4e82bb9756bc]

On Wed, May 16, 2018 at 6:49 PM, Tim Allison 
<talli...@apache.org<mailto:talli...@apache.org>> wrote:
You need to make your SAXReader namespace aware:

            saxFactory.setNamespaceAware(true);


On Wed, May 16, 2018 at 8:59 AM, Tim Allison 
<talli...@apache.org<mailto:talli...@apache.org>> wrote:

> Sorry for my delay.  I just tested your file with Apache Tika 1.18 which
> uses POI 3.17..., and I got:
>
>
> <body><div><h1>Sheet1</h1>
> <table><tbody><tr>      <td>Salary</td></tr>
> <tr>    <td>99.965432</td></tr>
> </tbody></table>
> </div>
> <div><h1>Sheet2</h1>
> <table><tbody/></table>
> </div>
> <div><h1>Sheet3</h1>
> <table><tbody/></table>
> </div>
> </body></html>
>
> That's promising...  Let me take a look at your example code.
>
> On Wed, May 16, 2018 at 1:31 AM, Syed Mudassir Ahmed <syed.mudassir@
<mailto:syed.mudassir@%0b>> gaianconsultants.com<http://gaianconsultants.com>> 
wrote:
>
>> any update on this pls?  This is blocking me.
>>
>> Thanks,
>>
>>
>> On Tue, May 15, 2018 at 3:45 PM, Syed Mudassir Ahmed <
>> syed.mudas...@gaianconsultants.com<mailto:syed.mudas...@gaianconsultants.com>>
>>  wrote:
>>
>>> Yes, pls find the file attached here.
>>>
>>> Thanks,
>>>
>>>
>>> On Tue, May 15, 2018 at 3:43 PM, Tim Allison 
>>> <talli...@apache.org<mailto:talli...@apache.org>>
>>> wrote:
>>>
>>>> Any chanc you can share the file?
>>>>
>>>> On Tue, May 15, 2018 at 3:19 AM Syed Mudassir Ahmed <
>>>> syed.mudas...@gaianconsultants.com<mailto:syed.mudas...@gaianconsultants.com>>
>>>>  wrote:
>>>>
>>>> > Hi,
>>>> >   I am trying to read data from a XLSX sheet via
>>>> XSSFSheetXMLHandler.  The
>>>> > source code is below.
>>>> >
>>>> >   public static void main(String str[]) throws Exception {
>>>> >         String filePath
>>>> >                 = "/home/gaian/Desktop/salary.xlsx";
>>>> >         File file = new File(filePath);
>>>> >         InputStream inputStream = new FileInputStream(file);
>>>> >         OPCPackage pkg = OPCPackage.open(inputStream);
>>>> >
>>>> >         SheetContentsHandler sheetContentsHandler = new
>>>> > SheetContentsHandler() {
>>>> >             @Override
>>>> >             public void startRow(int rowIndex) {
>>>> >             }
>>>> >
>>>> >             @Override
>>>> >             public void endRow(int i) {
>>>> >             }
>>>> >
>>>> >             @Override
>>>> >             public void cell(String cell, String formattedValue,
>>>> > XSSFComment c) {
>>>> >                 System.out.println("cell encountered with addess:<" +
>>>> cell
>>>> >                         + "> and value:<" + formattedValue + ">");
>>>> >             }
>>>> >
>>>> >             @Override
>>>> >             public void headerFooter(String text, boolean isHeader,
>>>> String
>>>> > tagName) {
>>>> >                 System.out.println("headerFooter()");
>>>> >             }
>>>> >         };
>>>> >
>>>> >         ReadOnlySharedStringsTable strings = new
>>>> > ReadOnlySharedStringsTable(pkg);
>>>> >         XSSFReader xssfReader = new XSSFReader(pkg);
>>>> >         StylesTable styles = xssfReader.getStylesTable();
>>>> >         XSSFReader.SheetIterator worksheets =
>>>> (XSSFReader.SheetIterator)
>>>> > xssfReader.getSheetsData();
>>>> >         InputStream stream = worksheets.next();
>>>> >         SAXParserFactory saxFactory = SAXParserFactory.newInstance();
>>>> >         XMLReader sheetParser = saxFactory.newSAXParser().getX
>>>> MLReader();
>>>> >
>>>> >         ContentHandler handler
>>>> >                 = new XSSFSheetXMLHandler(styles, strings,
>>>> > sheetContentsHandler, false);
>>>> >
>>>> >         sheetParser.setContentHandler(handler);
>>>> >         sheetParser.parse(new InputSource(stream));
>>>> >     }
>>>> >
>>>> >   When I use the POI version 3.13, I am getting the following output:
>>>> >
>>>> > cell encountered with addess:<A1> and value:<Salary>
>>>> > cell encountered with addess:<A2> and value:<99.965432>
>>>> >
>>>> >   The moment I switch to version 3.14 or higher, I am no longer
>>>> getting
>>>> > any output.
>>>> >
>>>> >   Can someone pls let me know if any more code changes needed if I
>>>> switch
>>>> > to 3.14 or higher?  I even checked the test cases in Apache POI 3.17
>>>> > sources but was shocked not to find any there.  Any
>>>> example/references that
>>>> > I can go through pls?  This is blocker for one of my applications.
>>>> >
>>>> >
>>>> > Thanks,
>>>> >
>>>> >
>>>>
>>>
>>>
>>
>


Reply via email to