读取excel数据时,有的单元格内容不能读出
2012-08-11 12:56
447 查看
表现:excel中某列中,有的单元格左上角有绿色箭头标志,有的没有,c#编写读取程序,但是只能读取出带绿色箭头的单元格中的内容,其余不带的读取不到内容
原因:excel中单元格因为是文本格式而存储了数值,导致后台错误检查,在左上角显示绿色箭头
解决:string strConn;
原来读取不完全的写法:strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties=Excel 8.0;";
完全读出的写法:strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
具体参数描述如下:
用OLEDB进行C#读取Excel数据,并返回DataSet数据集。其中有几点需要注意的:
C#读取Excel数据1.连接字符串中参数IMEX 的值:
0 is Export mode 1 is Import mode
2 is Linked mode (fullupdate capabilities)
IMEX有3个值:当IMEX=2 时,EXCEL文档中同时含有字符型和数字型时,比如第C列有3个值,2个为数值型 123,1个为字符型 ABC,当导入时,页面不报错了,但库里只显示数值型的123,而字符型的ABC则呈现为空值。当IMEX=1时,无上述情况发生,库里可正确呈现 123 和 ABC.
C#读取Excel数据2.参数HDR的值:
HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
C#读取Excel数据3.参数Excel 8.0
对于Excel 97以上版本都用Excel 8.0Google AdSense 会在您的网站上提供与内容相关的广告
/**//// 〈 summary〉
/// 读取Excel文件,将内容存储在DataSet中
/// 〈 /summary〉
/// 〈 param name="opnFileName"〉
带路径的Excel文件名〈 /param〉
/// 〈 returns〉 DataSet〈 /returns〉
private DataSet ExcelToDataSet
(string opnFileName)
...{
string strConn = "Provider=Microsoft.
Jet.OLEDB.4.0;Data Source=
"+opnFileName+";
Extended Properties=
\"Excel 8.0;HDR=YES;IMEX=1\"";
OleDbConnection conn =
new OleDbConnection(strConn);
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = new DataSet();
strExcel = "select * from [sheet1$]";
try
...{
conn.Open();
myCommand = new OleDbDataAdapter
(strExcel, strConn);
myCommand.Fill(ds,"dtSource");
return ds;
}
catch (Exception ex)
...{
MessageBox.Show("导入出错:"
+ ex, "错误信息");
return ds;
}
finally
...{
conn.Close();
conn.Dispose();
}
}
原因:excel中单元格因为是文本格式而存储了数值,导致后台错误检查,在左上角显示绿色箭头
解决:string strConn;
原来读取不完全的写法:strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties=Excel 8.0;";
完全读出的写法:strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
"Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
具体参数描述如下:
用OLEDB进行C#读取Excel数据,并返回DataSet数据集。其中有几点需要注意的:
C#读取Excel数据1.连接字符串中参数IMEX 的值:
0 is Export mode 1 is Import mode
2 is Linked mode (fullupdate capabilities)
IMEX有3个值:当IMEX=2 时,EXCEL文档中同时含有字符型和数字型时,比如第C列有3个值,2个为数值型 123,1个为字符型 ABC,当导入时,页面不报错了,但库里只显示数值型的123,而字符型的ABC则呈现为空值。当IMEX=1时,无上述情况发生,库里可正确呈现 123 和 ABC.
C#读取Excel数据2.参数HDR的值:
HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
C#读取Excel数据3.参数Excel 8.0
对于Excel 97以上版本都用Excel 8.0Google AdSense 会在您的网站上提供与内容相关的广告
/**//// 〈 summary〉
/// 读取Excel文件,将内容存储在DataSet中
/// 〈 /summary〉
/// 〈 param name="opnFileName"〉
带路径的Excel文件名〈 /param〉
/// 〈 returns〉 DataSet〈 /returns〉
private DataSet ExcelToDataSet
(string opnFileName)
...{
string strConn = "Provider=Microsoft.
Jet.OLEDB.4.0;Data Source=
"+opnFileName+";
Extended Properties=
\"Excel 8.0;HDR=YES;IMEX=1\"";
OleDbConnection conn =
new OleDbConnection(strConn);
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = new DataSet();
strExcel = "select * from [sheet1$]";
try
...{
conn.Open();
myCommand = new OleDbDataAdapter
(strExcel, strConn);
myCommand.Fill(ds,"dtSource");
return ds;
}
catch (Exception ex)
...{
MessageBox.Show("导入出错:"
+ ex, "错误信息");
return ds;
}
finally
...{
conn.Close();
conn.Dispose();
}
}
相关文章推荐
- oledbdataadapter 读取excel数据时,有的单元格内容不能读出
- ABAP--一个读取EXCEL单元格的内容超过256个字符的代码样例
- 读取Excel的内容,实现数据批量上传
- ABAP--一个读取EXCEL单元格的内容超过256个字符的代码样例
- 程序读取Excel,单元格内容超过255被截断解决方法
- excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)
- ABAP--一个读取EXCEL单元格的内容超过256个字符的代码样例
- Java中读取Excel文件的内容和导出数据到Excel文件
- 不能选中EXCEL单元格直接复制内容到数据库
- 无法读取Excel中的数据单元格。有数据,但是读出来全是空值
- qtp 读取excel单元格内容
- 读取Excel文件中的单元格的内容和颜色
- 读取Excel的内容,实现数据批量上传(转)
- 读取excel模板填充数据 并合并相同文本单元格
- Android_读取Excel_更改Excel内容,数据库保存数据
- 读取Excel的内容,实现数据批量上传
- 用OLEDB读取EXCEL时,单元格内容长度超过255被截断
- PHP 读取Excel单元格中时间格式的数据
- 用C#读取Excel文件:从指定单元格开始向右向下读取数据
- C#读取excel数据时,文本格式和数值格式的内容无法正常全部读取