c#编程:我只读取excel文件的第一行,但由于文件很大,读取很缓慢,有没有优化的方法?

 我来答
Sxzy灬丨小柒
2014-12-15 · TA获得超过623个赞
知道小有建树答主
回答量:1223
采纳率:50%
帮助的人:276万
展开全部

不可能慢.我曾经读过一个10万行的excel,一个sheet都装不下.都是分页装的.也是一瞬间就读进内存了.以下是读excel到DataTable中的方法

 public DataTable GetExcel(string Path)//Excel导入到DataSet
        {
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
            OleDbConnection conn = new OleDbConnection(strConn);
            OleDbDataAdapter myCommand = null;
            DataTable dt = new DataTable();
            int result = 1;
            try
            {
                conn.Open();
                DataTable dtName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
                string strExcel = "Select * from [" + dtName.Rows[0]["TABLE_NAME"].ToString() + "]";
                myCommand = new OleDbDataAdapter(strExcel, strConn);
                myCommand.Fill(dt);
                conn.Close();
            }
            catch (Exception ex)
            {
                result = 2;
            }
            finally
            {
                conn.Close();
            }
            if (result == 2) return null;
            else return dt;
        }

获取第一行第一列

DataTable dt = GetExcel(excelpath);

dt.Rows[0][0].ToString();

追问

首先谢谢这位大神。我做的是读取一个excel文件,将其每列列头,也就是Sheet的第一行显示出来,如图!

另外我读取的excel表至少在50万行数据以上。你说的我试过,真的很慢,就为了读取这行数据!我需要在10s之内获得结果,不知道是否还有好办法?

追答
真的很大啊.不过简单.用语句控制一下就ok了.
把我上面给你的代码稍微改动一下.
string strExcel = "Select * from [" + dtName.Rows[0]["TABLE_NAME"].ToString() + "]";
改为:
string strExcel = "Select top 1 * from [" + dtName.Rows[0]["TABLE_NAME"].ToString() + "]";
见证一下奇迹吧.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式