1.引入excel命名空间;
using Microsoft.Office.Interop.Excel;
2.导出函数;
public void ExportToExcel(System.Data.DataTable dt)
{
if (dt == null) return;
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
// lblMsg.Text = "无法创建Excel对象,可能您的电脑未安装Excel";
MessageBox.Show("无法创建Excel对象,可能您的电脑未安装Excel");
return;
}
System.Windows.Forms.SaveFileDialog saveDia = new SaveFileDialog();
saveDia.Filter = "Excel|*.xls";
saveDia.Title = "导出为Excel文件";
if (saveDia.ShowDialog() == System.Windows.Forms.DialogResult.OK
&& !string.Empty.Equals(saveDia.FileName))
{
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
Microsoft.Office.Interop.Excel.Range range = null;
long totalCount = dt.Rows.Count;
long rowRead = 0;
float percent = 0;
string fileName = saveDia.FileName;
//写入标题
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, i + 1];
//range.Interior.ColorIndex = 15;//背景颜色
range.Font.Bold = false;//粗体
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;//居中
//加边框
range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null);
//range.ColumnWidth = 4.63;//设置列宽
//range.EntireColumn.AutoFit();//自动调整列宽
//r1.EntireRow.AutoFit();//自动调整行高
}
//写入内容
for (int r = 0; r < dt.DefaultView.Count; r++)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheet.Cells[r + 2, i + 1] = dt.DefaultView[r][i];
range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[r + 2, i + 1];
range.Font.Size = 9;//字体大小
//加边框
range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null);
range.EntireColumn.AutoFit();//自动调整列宽
}
rowRead++;
percent = ((float)(100 * rowRead)) / totalCount;
System.Windows.Forms.Application.DoEvents();
}
range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
if (dt.Columns.Count > 1)
{
range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
}
try
{
workbook.Saved = false;
workbook.SaveCopyAs(fileName);
}
catch (Exception ex)
{
//lblMsg.Text = "导出文件时出错,文件可能正被打开!\n" + ex.Message;
MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
return;
}
workbooks.Close();
if (xlApp != null)
{
xlApp.Workbooks.Close();
xlApp.Quit();
int generation = System.GC.GetGeneration(xlApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
System.GC.Collect(generation);
}
GC.Collect();//强行销毁
#region 强行杀死最近打开的Excel进程
System.Diagnostics.Process[] excelProc = System.Diagnostics.Process.GetProcessesByName("EXCEL");
System.DateTime startTime = new DateTime();
int m, killId = 0;
for (m = 0; m < excelProc.Length; m++)
{
if (startTime < excelProc[m].StartTime)
{
startTime = excelProc[m].StartTime;
killId = m;
}
}
if (excelProc[killId].HasExited == false)
{
excelProc[killId].Kill();
}
#endregion
MessageBox.Show("导出成功!");
}
}
分享到:
相关推荐
总的来说,"Mr_YoungC#导出数据到EXCEL方法谈"这个资源很可能提供了详细的步骤和代码示例,帮助开发者了解如何从C#数据库导出Excel。无论是通过`Microsoft.Office.Interop.Excel`还是EPPlus,都可以实现这一目标,...
首先,我们来看C#导出Excel的实现。Excel文件通常以`.xlsx`或`.xls`格式存储,C#可以借助Microsoft Office Interop库直接操作Excel对象,但这要求目标机器上安装了Office。另一种更灵活且无需依赖Office的方法是使用...
本主题聚焦于如何利用C#从SQL Server数据库中读取数据并将其导出到Excel工作簿中。这个过程涉及到数据库连接、SQL查询、数据处理以及Excel文件操作等技术。以下是关于这一主题的详细阐述: 1. **数据库连接**:首先...
### 最好用的C# WinForms 数据导出到Excel 在C#开发中,经常需要将数据导出至Excel文件,特别是在WinForms应用程序中。本文将详细介绍如何利用C# WinForms将DataGridView中的数据导出到Excel文件,并提供了一个示例...
本文将深入探讨如何使用C++编程语言从SQL Server数据库中导出数据到Excel文件。 首先,要实现这个功能,我们需要了解SQL Server的数据导出机制。SQL Server提供了多种方式来导出数据,包括使用SQL Server ...
本教程将详细阐述如何使用C#将Access数据库的数据导出到Excel文件中,这是一个常见的数据转换需求,特别是在数据分析、报表生成和数据共享的场景下。 首先,我们需要理解C#如何与Access数据库进行交互。Access...
标题 "C# SQL Server2008R2与Excel的导入导出" 涉及的是在.NET开发环境中,利用C#语言与SQL Server 2008 R2数据库进行数据交互,特别是数据的导入和导出功能。SQL Server 2008 R2是微软公司的一款强大的关系型数据库...
在C# WinForm应用开发中,常常需要将数据从数据库中读取出来并导出到Excel文件,以便用户可以方便地进行数据查看、编辑或分析。这个过程涉及到多个技术环节,包括数据库操作、数据绑定、文件操作以及Excel文件格式...
本示例涉及的知识点主要集中在如何使用C#编程语言将SQL Server 2008中的数据导出到Excel文件中。下面我们将详细探讨这一过程。 1. **C#编程基础**:C#是.NET框架的基础,用于创建各种类型的Windows应用程序,包括...
在IT行业中,导出带图片的Excel服务是一项常见的需求,特别是在数据分析、报告生成或数据可视化的情景下。本文将详细讲解如何使用Visual Studio 2013开发这样的服务。 首先,我们需要了解Excel导出的基本原理。在...
本项目“C# winform实现表数据导出到Excel表格”旨在展示如何在Visual Studio 2010(VS2010)环境中,结合SQL Server 2005数据库,将WinForm应用中的数据导出到Microsoft Excel格式的文件中。这种功能在数据处理、...
C#程序访问数据库,并按照数据库查询字段导出到excel文件中。访问数据库程序代码采用工厂模式创建,可访问多个数据库,access、sql server2000(2005)、oracle,此程序已在实际工作中稳定运行半年,可当产品出售。...
本教程将详细阐述如何使用C#编程语言来实现在Oracle数据库中导出表格数据并将其保存为Excel文件。 首先,你需要确保已经安装了以下组件: 1. Oracle客户端或者ODP.NET(Oracle Data Provider for .NET),这将允许...
本项目"**C# MySQL导出表结构到Excel源码**"提供了一个实用的解决方案,允许开发者将MySQL数据库中的表结构导出为Excel格式,这对于数据备份、分析或共享非常有帮助。 首先,我们来看C#在这一过程中的作用。C#提供...
具体而言,包括如何将Excel文件中的数据导入到SQL Server数据库中,以及如何将SQL Server数据库中的数据导出至Excel文件中,以便于利用Excel的功能进行报表输出和打印。 #### 关键词 C#;SQL Server;Excel #### ...
按钮“导出excel”实现从页面导出excel文件, (注:此导出的excel是通过模板demo.xls导出的,模板写了一个求和宏,执行宏:打开导出的excel文件打开 工具-宏-宏-执行宏(求和);即可看到total处显示求和结果,实现...
本文将以C#语言为编程工具,以SQL Server作为目标数据库,详细介绍如何将Excel文件中的数据导入至SQL Server数据库,以及如何将数据库中的数据导出至Excel文件。 #### 二、数据库结构与表设计 在本案例中,我们...
在C# WinForm应用开发中,导出数据到Excel是一种常见的需求,这通常涉及到数据库操作、数据绑定以及Excel文件的创建和写入。本篇将详细介绍如何实现这一功能。 首先,你需要连接到数据库以获取数据。在C#中,我们...
在IT领域,特别是软件开发与数据管理中,数据...以上就是在C#中实现SQL数据与Excel数据的导入导出的关键步骤和技巧。这不仅涉及到对C#编程语言的掌握,还要求对数据库操作、文件处理以及图形用户界面组件有深入的理解。