Excel 文件导入 - 数据类型
本文关键字:数据类型 导入 文件 Excel | 更新日期: 2023-09-27 18:32:38
我一直在开发桌面应用程序,我在导入 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;
}
System.out.println(cell.toString());//here is the problem
toString() 方法返回对象的字符串表示形式。通常,toString 方法返回一个"文本表示"此对象的字符串。
使用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");
}