C# winform实现异步导出功能
来源:互联网 发布:擎洲广达软件价格 编辑:程序博客网 时间:2024/05/22 13:20
#region 数据导出-异步 string strName = string.Empty; private void btnExprot_Click(object sender, EventArgs e) { if (dt == null) { MessageBox.Show("没有可导出的数据"); } else { try { if (dt.Rows.Count < 1) { if (MessageBox.Show("确定要输出当前画面数据?", "消息内容", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { dt = (DataTable)gvXML.DataSource; } else { return; } } SaveFileDialog save = new SaveFileDialog(); save.Filter = "(*.xls)|*.xls"; save.FilterIndex = 0; if (save.ShowDialog() == DialogResult.OK) { save.RestoreDirectory = true; save.Title = cbColumn.SelectedItem as string + "表的重复数据"; strName = save.FileName; Query_Export(); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } private AsyncCallback Async_Export = null; private delegate DataTable DataTableExport(DataTable dst); public void Query_Export() { Async_Export = new AsyncCallback(CallBack); DataTableExport dtExport = new DataTableExport(GetDataTable); dtExport.BeginInvoke((DataTable)this.gvXML.DataSource, Async_Export, dtExport); } private DataTable GetDataTable(DataTable dst) { return (DataTable)this.gvXML.DataSource; } public void CallBack(IAsyncResult result) { DataTableExport dtBindExport = (DataTableExport)result.AsyncState; DataTable dtExport = dtBindExport.EndInvoke(result); Missing miss = Missing.Value; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); if (excel == null) { MessageBox.Show("无法创建Excel对象,可能您的计算机未安装Excel"); } else { #region 导出 Microsoft.Office.Interop.Excel.Workbooks books = excel.Workbooks; Microsoft.Office.Interop.Excel.Workbook book = books.Add(miss); Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet; //sheet.Name = cbColumn.SelectedItem as string; int collndex = 0; int rowIndex = 1; foreach (DataColumn col in dtExport.Columns) { collndex++; excel.Cells[1, collndex] = col.ColumnName; } foreach (DataRow row in dtExport.Rows) { rowIndex++; collndex = 0; foreach (DataColumn col in dtExport.Columns) { collndex++; excel.Cells[rowIndex, collndex] = row[col.ColumnName].ToString(); excel.get_Range((object)excel.Cells[1, collndex], (object)excel.Cells[1, collndex]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; excel.get_Range((object)excel.Cells[rowIndex, collndex], (object)excel.Cells[rowIndex, collndex]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; } } sheet.SaveAs(strName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss); book.Close(true, miss, miss); books.Close(); excel.Quit(); #endregion MessageBox.Show("导出成功!"); } } #endregion
0 0
- C# winform实现异步导出功能
- winForm中C#实现Excel的导出
- C#打印导出功能实现
- 用C#实现换肤功能 - winform
- winform C#实现查看收藏夹功能
- C# winform 实现MD5加密功能
- C# Winform DataGridView分页功能的实现
- C# winform 实现MD5加密功能
- c# winform实现简单的登录功能
- C# WinForm 实现增删改查等功能(Access版) 系列之八-导出数据到Excel
- C# WinForm 实现增删改查等功能(Access版) 系列之八-导出数据到Excel
- winForm c#导出Excel
- C# WinForm导出Excel
- C# Winform 导出Word
- C# Winform 导出Word
- C# BackgroundWorker实现WinForm异步操作的例子
- C# BackgroundWorker实现WinForm异步操作的例子
- C# winform中使用IAsyncResult实现异步编程
- eclipse+maven远程(自动)部署web项目到tomcat
- xilinx ddr3 使用ncverilog 仿真
- ActiveMQ基本应用
- iOS开发中键盘问题
- 递归效率为什么差?
- C# winform实现异步导出功能
- linux网络编程(转载)
- Low-rank representation with local constraint for graph construction
- CMFCPropertyGridCtrl 的简单教程
- Double Commander在Mac OS X下的实用配置
- 雅虎的人工智能有独门武器!
- 盘点:55个最实用大数据可视化分析工具
- Http请求保存用户的的登录状态
- 设计模式系列:状态模式