求一个快速将ListView中表格生成EXCEL的算法

Dragonfly_King 2007-08-03 10:15:45
最近在做一个系统,需要将ListView中的数据生成EXCEL,功能我倒是实现了,是用的COM,但是感觉速度实在是无法忍受,谁有好的办法,能够提高生成的速度啊?
先谢谢了!
下边是我写的代码,那位大大能够帮我改进一下,或者重新换个方法。

if (listView.Items.Count == 0)
{
MessageBox.Show("没有图幅可以导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
try
{
SaveFileDialog savDlg = new SaveFileDialog();
savDlg.CreatePrompt = true;
savDlg.OverwritePrompt = true;
savDlg.FileName = DateTime.Now.ToShortDateString() + "图幅查询结果表";
savDlg.DefaultExt = "xls";
savDlg.Filter = "Excel files(*.xls)|*.xls";
DialogResult res = savDlg.ShowDialog();
string filename = savDlg.FileName.ToString();
savDlg.Dispose();

if (res == DialogResult.OK)
{
File.Delete(filename);
Excel.Application app = new Excel.ApplicationClass();
System.Reflection.Missing miss = System.Reflection.Missing.Value;
if (app == null)
{
MessageBox.Show("Excel无法启动");
return;
}
Excel.Workbooks wbs = app.Workbooks;
Excel.Workbook wb = wbs.Add(miss);
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
Excel.Range r = ws.get_Range("A1", "H1");
wb.SaveAs(filename, miss, miss, miss, miss, miss,
Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss, miss, miss);
this.Refresh();
ProgressForm frm = new ProgressForm();
frm.SetInfoTxt("Excel表格生成进度:");
frm.SetProgress(0);
frm.MdiParent = this.MdiParent;
frm.Show();
frm.Refresh();
for (int i = 0; i < listView.Columns.Count; i++)
{
r.Cells[1, i + 1] = listView.Columns[i].Text;
}

frm.SetProgress(Convert.ToInt32((1 * 100) / (listView.Items.Count + 1)));

for (int i = 0; i < listView.Items.Count; i++)
{
for (int m = 0; m < listView.Columns.Count; m++)
{
r.Cells[i + 2, m + 1] = listView.Items[i].SubItems[m].Text;
}
frm.SetProgress(Convert.ToInt32(((i + 2) * 100) / (listView.Items.Count + 1)));
}
frm.Dispose();
app.Visible = true;
app = null;

}
...全文
151 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mingle_Qin 2007-08-03
  • 打赏
  • 举报
回复
主要是用OLE操作EXCEL慢.C#的话,你在本版搜一下,很多现成的操作EXCEL算法.

在下试过将其改了后,导出行5000,列20的数据表,不用2秒.
godgreat 2007-08-03
  • 打赏
  • 举报
回复
沙发沙发,帮忙顶

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧