C#生成Excel报表 用MyXls组件生成更完美

介绍如何使用C#开源组件MyXls生成带有格式的Excel文件,并提供了一个简单的示例代码,演示如何从数据库中获取数据并填充到Excel表格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在后台调用 excel 组件,生成 Excel ,虽然可以 Excel 文件 进行 完全控制, 可以生成任何复杂的格式,但是有个很大的缺点,这种方式会产生很多 Excel进程 很难完全清 掉,特别是在出错的时候, 可能会使整个服务器崩溃。本文为大家介绍一个 C# 写的开源组件,并简单说下 office2003 和以上版本支持的 XML 格式。

一 操作Excel二进制格式

    OpenOffice.org发布过的俩个文档Excel File Format (BIFF8)SpecificationMicrosoft CompoundDocument (OLE2) Format Specification对Excel的二进制格式做了一个比较详细的说明,依靠这些信息,我们可以直接操作Office二进制格式文档。

MyXls是一个C#写的开源组件,可以用来生成具有很多表格且包含格式的Excel文件。它提供了一套基于对象的API,非常容易使用。

MyXls 这个组件的DLL 和代码 可以在这下载到:
http://sourceforge.net/project/showfiles.php?group_id=205384&package_id=245371
以下是一个事例子。。

       protected   void  Page_Load( object  sender, EventArgs e)
        
{
               
string  strSql  =   " SELECT TRADE_DATE [Date],TOPEN [Open],Thigh High,tlow [Low] FROM DAY_QUOTATION where SEC_CODE='1' and TRADE_DATE>='20070411' order by TRADE_DATE desc " ;   // Sql语句
             DataSet ds  =  SqlHandle.ExecuteReturnDataSet(CommandType.Text, strSql,  null );
             xlsGridview(ds, 
" data " ); // 调用xlsGridview方法生成Excel报表
         }


         
///   <summary>
        
///  绑定数据库生成XLS报表
        
///   </summary>
        
///   <param name="ds"> 获取DataSet数据集 </param>
        
///   <param name="xlsName"> 报表表名 </param>
         private   void  xlsGridview(DataSet ds,  string  xlsName)
        
{
             XlsDocument xls 
=   new  XlsDocument();
            
            
int  rowIndex  =   1 ;
            
int  colIndex  =   0 ;

           
             System.Data.DataTable table 
=  ds.Tables[ 0 ];
             Worksheet sheet 
=  xls.Workbook.Worksheets.AddNamed( " sheet " ); // 状态栏标题名称
             Cells cells  =  sheet.Cells;
            
foreach  (DataColumn col  in  table.Columns)
            
{
                 colIndex
++ ;
                
// sheet.Cells.AddValueCell(1,colIndex,col.ColumnName); // 添加XLS标题行
                 cells.AddValueCell( 1 , colIndex,col.ColumnName);
             }


            
foreach  (DataRow row  in  table.Rows)
            
{
                 rowIndex
++ ;
                 colIndex 
=   0 ;
                
foreach  (DataColumn col  in  table.Columns)
                
{
                     colIndex
++ ;
                    
// sheet.Cells.AddValueCell(rowIndex, colIndex, row[col.ColumnName].ToString()); // 将数据添加到xls表格里
                     Cell cell =  cells.AddValueCell(rowIndex, colIndex, Convert.ToDouble(row[col.ColumnName].ToString())); // 转换为数字型
                    
// 如果你数据库里的数据都是数字的话 最好转换一下,不然导入到Excel里是以字符串形式显示。
                     cell.Font.FontFamily  =  FontFamilies.Roman;  // 字体
                     cell.Font.Bold  =   true ;   // 字体为粗体            
                 }
             }

             xls.Send();
         }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值