【发布时间】:2016-06-06 07:05:02
【问题描述】:
我有一个托管在 IIS 上的 asp.net mvc 应用程序。我有一个表单,用户可以从中上传包含 50k+ 行的 excel 文件。我使用以下 C# 代码读取了 excel 文件。
public DataTable GetExcelDataTable(string fileName)
{
string connectionString = Path.GetExtension(fileName) == "xls" ?
string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data source={0}; Extended Properties=Excel 8.0;", fileName) :
string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", fileName);
var conn = new OleDbConnection(connectionString);
using (var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", conn))
{
var ds = new DataSet();
adapter.Fill(ds);
DataTable data = ds.Tables[0];
conn.Close();
conn.Dispose();
adapter.Dispose();
return data;
}
}
问题在于它最多只能读取 30k 行,但不能读取整个 excel 文件。
有趣的是,如果我使用 Visual Studio 运行 mvc 应用程序,我可以读取(使用相同的代码)所有行,但同样不能从 IIS(IIS 也在我的机器上)托管网站。
任何想法,为什么会发生这种情况?
【问题讨论】:
-
读取 30k 条记录后出现任何错误?
-
不,不。我没有收到任何错误。不管是 iis 还是 iisexpress(通过 vs)
-
查看配置文件的样子可能会有所帮助,因为您的数据可能超出了读者配额。
-
是的,我看过了。但是,我对 IIS 和 IIS Express 有相同的配置。它在 IIS Express 上运行,而不是在 IIS 上运行。
-
检查这个link用户面临同样的问题
标签: c# asp.net-mvc excel iis oledb