问题:发现读取后的数据表中,当XLS中单位格的数据为全数字组成的时候 读取出来的数据就会是空的?例如:XLS里面的数据为
     零件图号     零件名称
     99100430018 转向横拉杆总成
     99100430018A 转向横拉杆总成
     99100430018 转向横拉杆总成
     JY33STR-03050LQ 转向横拉杆总成
读取出来后:
     零件图号     零件名称
                 转向横拉杆总成
     99100430018A 转向横拉杆总成
                        转向横拉杆总成
     JY33STR-03050LQ 转向横拉杆总成
代码如下:
                SeNet.ExcelAccess excel = new ExcelAccess();
                OpenFileDialog openFile = new OpenFileDialog();                OleDbConnection objConn = null;
                OleDbDataAdapter objAdapter = null;
                DataTable Subdt = null;
                DataTable dt = null;
                DataSet ds = null;                //打开XLS文件
                openFile.DefaultExt = "xls";
                openFile.Filter = "电子表格文件 (*.xls)|*.xls";
                DialogResult result = openFile.ShowDialog();                if (result != DialogResult.OK)
                {
                    return;
                }                string strPathFiles = openFile.FileName;
                excel.IsVisibledExcel = true;
                //让XLS作为数据源
                String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                "Data Source=" + strPathFiles + ";Extended Properties=Excel 8.0;";
                objConn = new OleDbConnection(connString);
                objConn.Open();//打开数据源
                dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);                if (dt == null)
                {
                    return;
                }                //获取XLS所有工作簿名称
                String[] excelSheets = new String[dt.Rows.Count];
                int i = 0;
                foreach (DataRow row in dt.Rows)
                {
                    excelSheets[i] = row["TABLE_NAME"].ToString().Substring(0, row["TABLE_NAME"].ToString().Length - 1);
                    i++;
                }                //把每一个工作簿作为一个TABLE,保存到DATASET中
                ds = new DataSet();
                foreach (string tableName in excelSheets)
                {
                    objAdapter = new OleDbDataAdapter("SELECT * FROM [" + tableName + "$] ", objConn);
                    Subdt = new DataTable();
                    objAdapter.Fill(Subdt);
                    Subdt.TableName = tableName;
                    ds.Tables.Add(Subdt);
                }
                objConn.Close();//关闭数据源
请高手帮忙想个法子~~~~~~~

解决方案 »

  1.   

    这种读法,只能读取标准的 EXCEL. 另外一种替代的方法,将 EXCEL 当作网页来读取,然后 用正则 取数据,也非常快。
      

  2.   

    现在我后面的操作都已经根据现在读取出来的dataset来写的  如果读取的数据不能为dateset的话 方法就要改了 而且,还有什么方法能把它的数据生成为我现在需要的格式吗?就是每个工作簿为单独的一个table读取保存
       还有个问题 ,,他把"."读成了"#"  - -!!
      

  3.   

    Extended Properties=Excel 9.0
    看看!
      

  4.   

    string strCon = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties='Excel 8.0;HDR=yes;IMEX=1';Data Source=" + strPathFiles;连接字符串改成这样就 纯数字的数据就显示了 就是不知道这些差数什么意思 如果知道所有的差数就好了
    还有  "."读成了"#" 是因为他读到了TABLE的列名后改变的 也不知道怎么做