如何DataTable在C#中导出到Excel?我正在使用Windows窗体.它DataTable与DataGridView控件相关联.我必须将记录导出DataTable到Excel.
以下代码在i7-*3.4 GHz windows-7 64位计算机上花费大约2500毫秒来读取具有25000行和5列的excel表.每个单元格大约包含一个10个字符的字符串.这是正常的吗?我怎样才能更快地阅读它?
Stopwatch sw1 = Stopwatch.StartNew();
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; " +
"Extended Properties=Excel 12.0;", filename);
var adapter = new OleDbDataAdapter("SELECT * FROM [roots$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "roots");
sw1.Stop(); Console.WriteLine("Time taken for excel roots: {0} ms", sw1.Elapsed.TotalMilliseconds);
Run Code Online (Sandbox Code Playgroud) 我创建了一个报告工具作为内部 Web 应用程序的一部分。该报告将所有结果显示在一个 GridView 中,我使用 JavaScript 将 GridView 的内容逐行读取到 Excel 对象中。JavaScript 继续在不同的工作表上创建数据透视表。
不幸的是,我没想到如果返回超过几天,GridView 的大小会导致浏览器过载问题。该应用程序每天有几千条记录,假设每月有 6 万条记录,理想情况下我希望能够返回长达一年的所有结果。行数导致浏览器挂起或崩溃。
我们在带有 SQL Server 的 Visual Studio 2010 上使用 ASP.NET 3.5,预期的浏览器是 IE8。该报告由一个 gridview 组成,它根据用户选择的人群从少数存储过程中的一个获取数据。网格视图位于 UpdatePanel 中:
<asp:UpdatePanel ID="update_ResultSet" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btn_Submit" />
</Triggers>
<ContentTemplate>
<asp:Panel ID="pnl_ResultSet" runat="server" Visible="False">
<div runat="server" id="div_ResultSummary">
<p>This Summary Section is Automatically Completed from Code-Behind</p>
</div>
<asp:GridView ID="gv_Results" runat="server"
HeaderStyle-BackColor="LightSkyBlue"
AlternatingRowStyle-BackColor="LightCyan"
Width="100%">
</asp:GridView>
</div>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
我对我的团队来说相对较新,所以我遵循了他们将 sproc 返回到 DataTable 并将其用作后面代码中的 DataSource 的典型做法:
List<USP_Report_AreaResult> areaResults = new List<USP_Report_AreaResult>();
areaResults …Run Code Online (Sandbox Code Playgroud) c# ×3
excel ×2
.net ×1
asp.net ×1
datatable ×1
gridview ×1
javascript ×1
oledb ×1
performance ×1