日期:2014-05-18  浏览次数:20909 次

合并excel多个工作表至一个dataset时遇到的奇怪问题
在将excel数据导入数据库时遇到的问题,如图所示

有些excel表中数据并没有写入dataset中,有些直接为为感叹号
excel中的三个sheet格式相同,后2个sheet是第一个sheet复制过去的,如图

我的代码如下
C# code
 
public DataSet ExcelDS(string filenameurl,string tablename)
        {
            string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filenameurl + ";Extended Properties=\"Excel 12.0;HDR=YES\"";
            
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();

            //這段Code的用意是在取得所有的SheetName
            DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "table" });
            DataSet ds = new DataSet();
            try
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //這段Code是在檢查sheet的名字後面有沒有加上$,沒有的話,就補上.
                    if (dt.Rows[i]["TABLE_Name"].ToString().IndexOf("$") < 0)
                    {
                        dt.Rows[i]["TABLE_Name"] += "$";
                    }

                    OleDbDataAdapter odda = new OleDbDataAdapter("Select * From [" + dt.Rows[i]["TABLE_Name"].ToString() + "] ", conn);
                    //读取第i个sheet
                    odda.Fill(ds, tablename);

                }
            }
            catch (Exception ex)
            {
                throw;
            }
     
            return ds;
        }



------解决方案--------------------
另外参见
http://dotnet.aspx.cc/file/ADO.NET-Excel-IMEX=1.aspx

再不行,就发excel给我