当前位置:首页 ? 其他

C# 读取Excel工作表

2012-07-06 00:39 本站整理 浏览(10)

最近一直在处理工作表的问题,其间用到了C#读取表中数据的问题,其方法如下:

using Data=System.Data;
/// 
        /// 获取某个工作表中的数据
        /// 
        /// 文件名称及路径
        /// 查询的工作表
        /// 获取到的数据
        public Data.DataTable GetDataFromWorkSheet(string fileName, string queryWorkSheetName)
        {
            Data.DataTable dtResult = null;
            string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=No; IMEX=1;\"";
            string query = "select * from [" + queryWorkSheetName + "$]";
            try
            {
                using (OleDbCommand oleCommand = new OleDbCommand(query, new OleDbConnection(string.Format(ConnStr, fileName))))
                {
                    using (OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand))
                    {
                        Data.DataSet myDataSet = new Data.DataSet();
                        oleAdapter.Fill(myDataSet);
                        dtResult = myDataSet.Tables[0];

                    }

                }
            }
            catch
            {
                dtResult = null;
            }
            return dtResult;
        }
以上的方法,将一个工作表中的数据读取到了DataTable,但有一点需要注意:

假设一个表中的前4行没有数据,从第五笔开始有数据,那返回的DataTable中第一笔就是该工作表中的第五笔,即只读取有数据的笔,在列上也是如此,在注意这一种的时候也需要注意:如果一表中前3列没有数据,第4~5列有数据,第6列没有数据,第七列有数据,读取到DataTable中后,该表的前3列被抛弃,但第6列不会被抛弃,因为它的左右两列都有数据。