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 方法返回一个“以文本形式表示” thisobject

利用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 回答
0

这对我有用。尝试这个

 if (currentCell.getCellType().toString().contentEquals("NUMERIC")) {
        
   value = String.valueOf(currentCell.getNumericCellValue());
   value = value.endsWith(".0") ? value.replace(".0", "") : value;
}
于 2021-08-05T10:20:27.450 回答