1

Excel ファイルの特定の列の値を読み取る必要があります。

セルの値をそのまま読み取ることができません。

私のコードは

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.usermodel.Workbook;


public class ExcelSheetColumn 
{
public static void main(String[] args) throws InvalidFormatException, FileNotFoundException, IOException
{
    Workbook wb = WorkbookFactory.create(new FileInputStream("C:/Users/Pradeep.HALCYONTEKDC/Desktop/My Data/ExcelFiles/XLS1.xls"));
    Sheet sheet = wb.getSheet("Retail - All");
    Row row=null;
    Cell cell ;
    for (int j=0; j< sheet.getLastRowNum()+1; j++)
    {
        row = sheet.getRow(j);

        cell = row.getCell(0);
        if(cell!=null)
        {
            int type = cell.getCellType();
            if (type == HSSFCell.CELL_TYPE_STRING)
              System.out.println(cell.getRichStringCellValue().toString());
            else if (type == HSSFCell.CELL_TYPE_NUMERIC)
                System.out.println(cell.getNumericCellValue());
            else if (type == HSSFCell.CELL_TYPE_BOOLEAN)
                System.out.println( cell.getBooleanCellValue());
            else if (type == HSSFCell.CELL_TYPE_BLANK)
                System.out.println(cell.getColumnIndex() + "] = BLANK CELL");
       }
    }
}
}

Excel 列の値は

79
999861
999861
https://staging.adpcreditsolutions.com
/index/contract_decision
9200278
2011/01/17
79
5032944200
IL4-PCC@TEST.COM
1979/12/31
0.00
0.00

しかし、私が得ている出力は

79.0
999861.0
999861.0
https://staging.adpcreditsolutions.com
/index/contract_decision
9200278.0
17-Jan-2011
79.0
5.0329442E9
IL4-PCC@TEST.COM
31-Dec-1979
0.0
0.0

上記のプログラムのコードを読んで、Excel の列の値をそのまま読み取るにはどうすればよいですか? 私を助けてください!!

if (type == HSSFCell.CELL_TYPE_NUMERIC)
            {
                String stringValue=""+cell.getNumericCellValue();
                String[] splitValue=stringValue.split(".0");
                System.out.println(splitValue[0]);
            }
4

3 に答える 3

1
 System.out.println(cell.toString());//here is the problem

toString()メソッドは、の文字​​列表現を返しますobject。一般に、 toString メソッドは this を「テキストで表すobject

使用するcell.getStringCellValue()

代わりは

cell.toString()

そして、適切な使用が必要です。

数値の場合は、使用する必要があります

getNumericCellValue() そしてそこに条件を置きます

if(cell!=null)
        {
            int type = cell.getCellType();
            if (type == HSSFCell.CELL_TYPE_STRING)
              System.out.println(cell.getRichStringCellValue().toString());
            else if (type == HSSFCell.CELL_TYPE_NUMERIC)

              String[] splits = String.valueOf(cell.getNumericCellValue()).split(".");

           System.out.println(splits[0]);
            else if (type == HSSFCell.CELL_TYPE_BOOLEAN)
                System.out.println( cell.getBooleanCellValue());
            else if (type == HSSFCell.CELL_TYPE_BLANK)
                System.out.println(cell.getColumnIndex() + "] = BLANK CELL");
        }
于 2013-05-10T07:36:20.223 に答える
0

数値フィールドから文字列値を読み取ることはできません。例外をスローします。

于 2013-08-26T09:15:52.517 に答える