zoukankan      html  css  js  c++  java
  • 用QueryTable向excel批量导入数据

    前面写过两篇excel操作的文章,有朋友质疑大批量数据下的性能问题,这个时候最好用批量复制的方法,可以用excel的QueryTable来直接查询数据库,但是必须引用com组件。


    参考代码:

    1. using  System;
    2. using  System.Collections.Generic;
    3. using  System.Text;
    4. using  System.Reflection;
    5. using  Excel = Microsoft.Office.Interop.Excel;
    6. namespace  ConsoleApplication18
    7. {
    8.      class  Program
    9.     {
    10.          static   void  Main( string [] args)
    11.         {
    12.             ExportDataToExcel( "Provider=SQLOLEDB.1;sever=localhost;uid=sa;password=***;database=master;" ,
    13.                  "select * from sysobjects" ,@ "c:/testOle.xls" , "sysobjects" );
    14.         }
    15.          /// <summary>
    16.          /// 直接导出数据到excel
    17.          /// </summary>
    18.          /// <param name="connectionString">连接字符串</param>
    19.          /// <param name="sql">查询语句</param>
    20.          /// <param name="fileName">文件名</param>
    21.          /// <param name="sheetName">表名</param>
    22.          static   void  ExportDataToExcel( string  connectionString, string  sql, string  fileName, string  sheetName)
    23.         {
    24.             Excel.Application app =  new  Excel.ApplicationClass();
    25.             Excel.Workbook wb = (Excel.WorkbookClass)app.Workbooks.Add(Missing.Value);
    26.             Excel.Worksheet ws = wb.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value)  as  Excel.Worksheet;
    27.             ws.Name = sheetName;
    28.              try
    29.             {
    30.                 Excel.QueryTable qt = ws.QueryTables.Add( "OLEDB;"  + connectionString,
    31.                     ws.get_Range( "A1" , Missing.Value), sql);
    32.                 qt.Refresh( false ); //是否异步查询
    33.             }
    34.              catch  (Exception ex)
    35.             {
    36.                  string  str = ex.Message;
    37.             }
    38.              finally
    39.             {
    40.                 wb.Saved =  true ;
    41.                 wb.SaveCopyAs(fileName); //保存
    42.                 app.Quit(); //关闭进程
    43.             }
    44.         }
    45.     }
    46. }

    相关文章

    通过excel可识别的xml结构直接生成xls文件

    通过文件结构直接生成xls文件

  • 相关阅读:
    【剑指offer】把字符串转换成整数
    【剑指offer】不用加减乘除做加法
    【剑指offer】求1+2+3+...+n
    【剑指offer】孩子们的游戏(圆圈中最后剩下的数)
    【剑指offer】扑克牌顺子
    【剑指offer】翻转单词顺序列
    【剑指offer】左旋转字符串
    【剑指offer】和为S的两个数字
    【剑指offer】和为S的连续正数序列
    2019.1.10 Mac安装Nginx服务器
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204888.html
Copyright © 2011-2022 走看看