在线咨询: 80015105 点击进行对话
联系我们
代理商登录 代理合作
客户服务管理登录
企业/个人应用
教育行业应用
网站运营/推广
软件外包    
鸿诺软件温馨提示,请先登录或者注册: 登录 | 注册 | 搜索
xls - 产品论坛 [北京鸿诺软件技术有限公司]
产品论坛 [北京鸿诺软件技术有限公司]软件外包、研究与开发技术研究xls
    
 

鸿诺软件产品均提供免费下载。有任何建议,请登录发表建议或评论。鸿诺软件电话:010-51650063 QQ:80015105  帖子排序:
2008-3-29 9:59:36
it_it





发 帖 数:9
注册时间:2008-3-29
xls


using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;

private string NumTochr(int Num)
         {
             int n = 64 + Num;
             return "" + (Char)n;

         }
         private string NumToExeclRowStr(int Num)
         {
             int X, Y;
             if (Num < 27)
             {
                 return NumTochr(Num);
             }
             X = Num / 26;
             Y = Num - X * 26;
             return NumTochr(X) + NumTochr(Y);

         }
         /// <summary>
         /// 将DataTable中的列名及数据导出到Excel表中
         /// </summary>
         /// <param name="tmpDataTable">要导出的DataTable</param>
         /// <param name="strFileName">Excel的保存路径及名称</param>
         public void DataTabletoExcelkk(System.Data.DataTable tmpDataTable, string strFileName)
         {
             if (tmpDataTable == null)
                 return;
             int rowNum = tmpDataTable.Rows.Count;
             int columnNum = tmpDataTable.Columns.Count;
             int rowIndex = 1;
             int columnIndex = 0;

             Excel.Application xlApp = new Excel.ApplicationClass();
             xlApp.DefaultFilePath = "";
             xlApp.DisplayAlerts = true;
             xlApp.SheetsInNewWorkbook = 1;
             Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
             Excel.Worksheet ws = (Excel.Worksheet)xlBook.Worksheets[1];
             int colnum = tmpDataTable.Columns.Count;
             Excel.Range r = ws.get_Range("A1", NumToExeclRowStr(colnum) + "1");
             object[] objHeader = new object[colnum];

             //将DataTable的列名导入Excel表第一行
             foreach (DataColumn dc in tmpDataTable.Columns)
             {
                 objHeader[columnIndex] = dc.ColumnName;
                 columnIndex++;

             }
             r.Value2 = objHeader;

             //将DataTable中的数据导入Excel中
             for (int i = 0; i < rowNum; i++)
             {
                 rowIndex++;
                 columnIndex = 0;
                 for (int j = 0; j < columnNum; j++)
                 {
                     objHeader[columnIndex] = tmpDataTable.Rows[j].ToString();
                     columnIndex++;

                 }
                 r = ws.get_Range("A" + (i + 2), NumToExeclRowStr(colnum) + (i + 2));
                 r.Value2 = objHeader;
                

             }
             r.EntireColumn.AutoFit();
             xlBook.SaveCopyAs(strFileName);
         }
调用---
   private void button5_Click(object sender, EventArgs e)
         {


             DbClass = new Db_Class();
             System.Diagnostics.Stopwatch MyWatch = new System.Diagnostics.Stopwatch();
             MyWatch.Start();
             DataTabletoExcelkk(DbClass.Db_CreateDataSet("select * from tab).Tables[0], "C:\\pp.xls");
             MyWatch.Stop();
             MessageBox.Show(MyWatch.ElapsedMilliseconds.ToString() + "毫秒");


         }
使用单元填充Cells[rowIndex, columnIndex]一般慢的多,rangle提高的columnNUM倍
返回页首↑
北京鸿诺软件技术有限公司
中国 北京 海淀区罗庄西里13号东达商务写字楼2层
邮编: 100088   总机:010- 51650063/82357500
产品论坛 [北京鸿诺软件技术有限公司]