c#编程:我只读取excel文件的第一行,但由于文件很大,读取很缓慢,有没有优化的方法?
1个回答
展开全部
不可能慢.我曾经读过一个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();
追问
追答
真的很大啊.不过简单.用语句控制一下就ok了.
把我上面给你的代码稍微改动一下.
string strExcel = "Select * from [" + dtName.Rows[0]["TABLE_NAME"].ToString() + "]";
改为:
string strExcel = "Select top 1 * from [" + dtName.Rows[0]["TABLE_NAME"].ToString() + "]";
见证一下奇迹吧.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询