`
isiqi
  • 浏览: 16058529 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

C#导出Excel几个例子

阅读更多

其中X 代表数字,一般 9.0 以上 , 根据你的操作系统以及 office 版本而定
C# DataSet 中的数据写入 Excel
导出Excel 文件 #region 导出 Excel 文件
/**/////<summary>
///导出 Excel 文件
///</summary>
///<paramname="ds">要导出的 DataSet</param>
///<paramname="strExcelFileName">要导出的文件名 </param>
privatevoidExportExcel(DataSetds,stringstrExcelFileName)
{
objectobjOpt=Missing.Value;
Applicationexcel=newApplication();
excel.Visible=true;
_Workbookwkb=excel.Workbooks.Add(objOpt);
_Worksheetwks=(_Worksheet)wkb.ActiveSheet;

wks.Visible=XlSheetVisibility.xlSheetVisible;

introwIndex=1;
intcolIndex=0;

DataTabletable=ds.Tables[0];
foreach(DataColumncolintable.Columns)
{
colIndex++;
excel.Cells[1,colIndex]=col.ColumnName;
}

foreach(DataRowrowintable.Rows)
{
rowIndex++;
colIndex=0;
foreach(DataColumncolintable.Columns)
{
colIndex++;
excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
}
}
//excel.Sheets[0]="sss";
wkb.SaveAs(strExcelFileName,objOpt,null,null,false,false,XlSaveAsAccessMode.xlNoChange,null,null,null,null,null);
wkb.Close(false,objOpt,objOpt);
excel.Quit();
}
#endregion


这是一个使用Excel 中查询分析器 (Ms 通用查询分析器 ) 完成从 SQLServer7.0 以上版本 ( 已通过测试 ) 的数据快速导出到 Excel 中的示例。它由两个参数完成,其中的第一个是你所要进行查询分析时使用的 Select 查询语句。为了好看,我们给我们导出的数据加上一个名称。名称,由第二个参数传递进来:)好了,不说什么废话了。大家看代码吧。

usingSystem;
usingExcel;
namespace类库
{
publicclassExcel导出
{
publicExcel导出 (string 查询语句 ,string 标题 )
{
Excel.Applicationexcel;
Excel._WorkbookxBk;
Excel._WorksheetxSt;
Excel._QueryTablexQt;
stringConn="ODBC;DRIVER=SQLServer;SERVER=[服务器地址或者名称 ];UID=sa;PWD=[ 密码 ];APP=[ 应用程序名称 ( 一般为操作系统名 )];WSID=[ 工作站名称 ( 客户端 )];DATABASE=[ 数据库名称 ]";
stringSelect=查询语句 ;
excel=newExcel.ApplicationClass();
xBk=excel.Workbooks.Add(true);
xSt=(Excel._Worksheet)xBk.ActiveSheet;
excel.Cells[2,2]=标题 ;
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold=true;
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Name="黑体 ";
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size=22;
xQt=xSt.QueryTables.Add(Conn,xSt.get_Range(excel.Cells[4,2],excel.Cells[4,2]),Select);
xQt.Name="导出示例 ";
xQt.FieldNames=true;
xQt.RowNumbers=false;
xQt.FillAdjacentFormulas=false;
xQt.PreserveFormatting=false;
xQt.BackgroundQuery=true;
xQt.RefreshStyle=Excel.XlCellInsertionMode.xlInsertDeleteCells;
xQt.AdjustColumnWidth=true;
xQt.RefreshPeriod=0;
xQt.PreserveColumnInfo=true;
xQt.Refresh(xQt.BackgroundQuery);
excel.Visible=true;
}
}
}

全中文的,不用进行解释了吧?

原来进行数据导出操作( 相关连接 http://www.csdn.net/Develop/Read_Article.asp?Id=21391 ),三百条记录,用时十分钟以上。如果使用 Excel 自带的这一个查询工具,导出一万条记录,只需十秒钟以内的时间,而且,可以完成格式自动排版的功能。

可能有人会问:Excel 里面的查询语句与 SQLServer 里面的查询语句是不是一样的?这里说明一点。使用这个类,可以直接使用 SQLServer 里面的查询语句,包括直接传递 SQLServer 的存储过程。

protectedvoidDoTranExcel(System.Data.DataSetExelDt)
{
intcolIndex=1,rowIndex=1;
Excel.Applicationexcel;
try
{
excel=newExcel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible=true;
}
catch
{
MessageBox.Show("您可能没有安装 Office ,请安装再使用该功能 ");
return;
}
//foreach(DataColumncolinthis.ExelDt.Tables[0].Columns)
//{
//excel.Cells[1,colIndex]=col.ColumnName;colIndex++;
try
{
//}
for(inti=0;i<this.xdg.TableStyles[0].GridColumnStyles.Count;i++)
{
excel.Cells[1,colIndex]=this.xdg.TableStyles[0].GridColumnStyles[i].HeaderText;colIndex++;
}
foreach(DataRowrowinExelDt.Tables[0].Rows)
{
rowIndex++;colIndex=0;
foreach(DataColumncolinExelDt.Tables[0].Columns)
{
colIndex++;
if(colIndex==1)
{
excel.Cells[rowIndex,colIndex]="'"+row[col.ColumnName].ToString();
}
else
{
excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
}
}
}
}
catch(System.Exception)
{
MessageBox.Show("输出 Excel 有错误,请确认没有关闭 Excel");
return;
}
}

分享到:
评论

相关推荐

    用于C#初学者的几个小程序

    适用于C#初学者的几个小程序,可以加深对这门语言的理解 包括有以下内容: 1.C#获取当前程序所在的文件夹.rar 2.C#界面皮肤(带例子).rar 3.C#如何使用托盘控件的实例源码.rar 4.C#文本加密解密算法示例源代码.rar 5....

    asp.net学习大全(超全面的资料整合)

    DataGrid导出EXCEL的几个方法(WebControl).txt DataGrid的打印预览和打印.txt GridView排序.txt GRID控件删除之前确认.txt javascript小技巧.doc MVC在Web系统中的模式与应用.doc NET中各种数据库连接大全.doc ...

    ASP.NET学习大全

    DataGrid导出EXCEL的几个方法(WebControl).txt DataGrid的打印预览和打印.txt GridView排序.txt GRID控件删除之前确认.txt javascript小技巧.doc MVC在Web系统中的模式与应用.doc NET中各种数据库连接大全.doc ...

    excel导入sql2005的几种方法归纳

     在这个例子中,我们将使用windows验证连接到本地SQL Server实例,所使用的数据库将是ImportExcel。  在Specify Table Copy or Query(指定表复制或查询)向导界面中,选择copy data from one or more tables or ...

    asp.net知识库

    与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const...

    ReportMachine

    一个报表只需几分钟的时间。  3、报表样式可以保存为rmf格式,下次可通过读入使用(配合SQL脚本就可以生成 报表)。并可以把带数据的报表保存为rmp格式,在任何机器上都可以浏览、打印, 而不需要数据库。  4、...

    vc++ 应用源码包_6

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    vc++ 应用源码包_5

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    vc++ 应用源码包_1

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    vc++ 应用源码包_2

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    vc++ 应用源码包_3

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    vc++ 开发实例源码包

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! 如题。详细见源码。 GMem 内存管理单元源码。GMem.cpp...

Global site tag (gtag.js) - Google Analytics