0

我一直在开发桌面应用程序,但在导入 Excel 文件时遇到了一点问题。

一切都很好,但是当我从 Excel 表中读取数据时,它并没有读取所有的数字和字母。例如,如果列的第一个单元格是数字,那么它将不会从该列读取字母。如果我手动将该列的类型更改为文本,那么一切都很好。

这是我导入 Excel 工作表数据的示例代码。

有任何想法吗?

public static DataSet exceldata(string filelocation)
{
    DataSet ds = new DataSet();

    OleDbCommand excelCommand = new OleDbCommand();
    OleDbDataAdapter excelDataAdapter = new OleDbDataAdapter();

    string excelConnStr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 4.0;HDR=YES;IMEX=1;Importmixedtypes=text;typeguessrows=0;\"", filelocation);

    OleDbConnection excelConn = new OleDbConnection(excelConnStr);

    excelConn.Open();

    DataTable dtPatterns = new DataTable();
    excelCommand = new OleDbCommand("SELECT * FROM [Sheet1$]", excelConn);

    excelDataAdapter.SelectCommand = excelCommand;

    excelDataAdapter.Fill(dtPatterns);

    ds.Tables.Add(dtPatterns);

    return ds;

}
4

1 回答 1

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

toString() 方法返回对象的字符串表示形式。通常,toString 方法返回一个“以文本方式表示”该对象的字符串。

利用 cell.getStringCellValue()

反而

单元格.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-09-25T06:37:18.873 回答