none
Excel 导入格式问题

    问题

  •             string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + Server.MapPath("\\Excel") + "\\" + strFileName + ";Extended Properties='Excel 8.0; HDR=Yes; IMEX=1'";
                if (strExt == ".xlsx")
                {
                    strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + Server.MapPath("\\Excel") + "\\" + strFileName + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
                }
                    OleDbConnection conn = new OleDbConnection(strConn);
                    OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from [Sheet1$]", conn);
                    DataSet ds = new DataSet();
                    adapter.Fill(ds, "Table1");

    使用以上方式导入excel,excel中有一个手机列,某些行填写的手机号,excel标识为“此单元格中的数字为文本格式,或者其前面有撇号”,这样的数据读取后,是空字符串。请教程序上怎么解决?

    开心了就笑,不开心了就过会儿再笑

    2015年11月30日 3:26

全部回复

  • 您好,

    我测试了您的代码,分别用于xls和xlsx文件上,都可以读取到文本格式或者加撇号的电话号码。Excel中数据格式如下图所示。请提供更多的信息,以获取更多的帮助。

    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年11月30日 5:45
  • 我这边带这种标识的,也不是都不能读取,只是部分。所以恐怕我只能把这个文件传给你,你试下才能发现。如果愿意的话,请留下您的邮箱。

    开心了就笑,不开心了就过会儿再笑

    2015年12月1日 6:45
  • 您好,

    您也可以把不能读取的部分截图发上来。有没有可能是你的电话号码中包含半角字符。比如4434 4424?

    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年12月1日 7:28
  • 如上图


    开心了就笑,不开心了就过会儿再笑

    2015年12月2日 8:34
  • 我也试了下您的代码,号码都是可以读到的。你可以把你的excel发到jerrywng@163.com

    2015年12月3日 7:41
  • 您好,已经发送到您的邮箱

    开心了就笑,不开心了就过会儿再笑

    2015年12月4日 1:54
  • 测试了,都可以取的到,使用的是如下代码。

    string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=D:\\textPone.xls;Extended Properties='Excel 8.0; HDR=Yes; IMEX=1'";
    OleDbConnection conn = new OleDbConnection(strConn);
    OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from [Sheet1$]", conn);
    DataSet ds = new DataSet();
    adapter.Fill(ds, "Table1");
    for (int i = 0; i < 32; i++)
    {
        Console.WriteLine(ds.Tables[0].Rows[i][0] + "/" + ds.Tables[0].Rows[i][4] + "/" + ds.Tables[0].Rows[i][8]);
    }

    得到的结果是,


    2015年12月4日 3:13
  • 你好,给你的那份数据我替换过,刚刚我也试过了,确实可以读取到,现在我又给你发了一份原始的数据,没有替换的,麻烦再试下

    开心了就笑,不开心了就过会儿再笑

    2015年12月10日 6:52
  • 另外,真实数据烦请不要在这里粘贴,谢谢

    开心了就笑,不开心了就过会儿再笑

    2015年12月10日 6:55
  • 你好,

    请问你的问题解决了吗?如果解决的话,可以分享一下你的解决方案吗给我们大家吗?如果没有的话,也可以发一份数据给我,我也可以帮你看看是什么原因。我的email是 coleasp@163.com

    Best regards,

    Cole

    2016年1月27日 12:39
    版主
  • 数据是不是从别的地方导出的?是不是数据存在问题。另外可以尝试使用NPOI
    2016年2月3日 8:04