微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#中数据库数据如何导出至Excel表格

 

C#中数据库数据如何导出至Excel表格

标签: excel数据库c#insertstringnull
  17693人阅读  评论(9)  收藏  举报

  分类
 

    有时候需要将数据库的数据导出至Excel表格表格,以便进行查看和分析,那么如何导出呢?下面用代码来实现。
    首先,新建一个工程,需要添加引用Microsoft.Office.Interop.Excel.dll,以Oracle数据库为例(只要读出DataTable或DataSet就行了,哪种数据库没关系)。

1、创建一个表格,并插入如下数据。

  1. drop table TABLETESTEXCEL;  
  2. create table TABLETESTEXCEL  
  3. (  
  4.   col_id   NUMBER not null,  
  5.   col_name VARCHAR2(32),  
  6.   col_age  NUMBER,  
  7.   col_sex  VARCHAR2(4),248)">   col_work VARCHAR2(32),153); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important">   col_mony FLOAT  
  8. );  

数据:

2、C#代码实现

数据库操作的类:

    public class DataBaseHelper  
  1.  {  
  2.     public static DataTable ExecuterQuery(string connectionString, string commandsql)  
  3.     {  
  4.         DataTable dataTable = new DataTable();  
  5.         try  
  6.         {  
  7.           using (OracleConnection oracleConnection =   
  8.           new OracleConnection(connectionString))  
  9.           {  
  10.             oracleConnection.open();  
  11.             using (OracleDataAdapter oracleDataAdapter =   
  12.             new OracleDataAdapter(commandsql,oracleConnection))  
  13.                 {  
  14.                    oracleDataAdapter.Fill(dataTable);  
  15.                 }  
  16.                 oracleConnection.Close();  
  17.           }  
  18.         }  
  19.         catch  
  20.           return null;  
  21.      return dataTable;  
  22.     }  
  23.  }  

 导出Excel的类:

copy
  public class DataChangeExcel  
  •         /// <summary>  
  •         /// 数据库转为excel表格  
  •          /// </summary>  
  •        /// <param name="dataTable">数据库数据</param>  
  •        /// <param name="SaveFile">导出的excel文件</param>  
  •         public static void DataSetToExcel(DataTable dataTable, string SaveFile)  
  •         {  
  •             Excel.Application excel;  
  •             Excel._Workbook workBook;  
  •             Excel._Worksheet workSheet;  
  •             object misValue = System.Reflection.Missing.Value;  
  •             excel = new Excel.ApplicationClass();  
  •             workBook = excel.Workbooks.Add(misValue);  
  •             workSheet = (Excel._Worksheet)workBook.ActiveSheet;  
  •             int rowIndex = 1;  
  •             int colIndex = 0;  
  •             //取得标题  
  •             foreach (DataColumn col in dataTable.Columns)  
  •             {  
  •                 colIndex++;  
  •                 excel.Cells[1, colIndex] = col.ColumnName;  
  •             }  
  • //取得表格中的数据  
  •             foreach (DataRow row in dataTable.Rows)  
  •                 rowIndex++;  
  •                 colIndex = 0;  
  •                 foreach (DataColumn col in dataTable.Columns)  
  •                    colIndex++;  
  •                    excel.Cells[rowIndex, colIndex] =   
  •                           
  •                         row[col.ColumnName].ToString().Trim();  
  •                     //设置表格内容居中对齐  
  •                       workSheet.get_Range(excel.Cells[rowIndex, colIndex],   
  •                           
  •                         excel.Cells[rowIndex, colIndex]).HorizontalAlignment =   
  •                         Excel.XlVAlign.xlVAlignCenter;  
  •                 }  
  •             excel.Visible = false;  
  •             workBook.SaveAs(SaveFile, Excel.XlFileFormat.xlWorkbookNormal, misValue,248)">                 misValue, Excel.XlSaveAsAccessMode.xlExclusive,153); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important">                   
  •             dataTable = null;  
  •             workBook.Close(true, misValue);  
  •             excel.Quit();  
  •             PublicMethod.Kill(excel);//调用kill当前excel进程  
  •             releaseObject(workSheet);  
  •             releaseObject(workBook);  
  •             releaseObject(excel);  
  •         private static void releaseObject(object obj)  
  •             try  
  •             {  
  •                 System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);  
  •                 obj = null;  
  •             catch  
  •             finally  
  •                 GC.Collect();  
  •         }  
  •  }  
  • 关闭进程的类:

    写好了如上的类,那么开始调用吧,调用:

    这样成功将数据导出,如图。

     

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

    相关推荐