热线电话:13121318867

登录
首页精彩阅读C#读取excel数据时,文本格式和数值格式的内容无法正常全部读取
C#读取excel数据时,文本格式和数值格式的内容无法正常全部读取
2018-01-04
收藏

C#读取excel数据时,文本格式和数值格式的内容无法正常全部读取

表现: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();
    }
    }

数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询