数据向Excel中写入的加速的办法.

 一个单元格一个单元格的写入Excel虽然不错,但是速度太慢,要重复的操作Excel对象. 在网上找到了个办法,是写入数组,然后由数组直写入Excel中,速度要快许多.

1. 生成Object数组的方法
  1.         public object[,] GetObjectArray(System.Data.DataTable dt)
  2.         {
  3.             object[,] objData = new object[dt.Rows.Count, dt.Columns.Count];
  4.             for (int i = 0; i < dt.Rows.Count; i++)
  5.             {
  6.                 //  string col ="A" + (i+2).ToString();
  7.                 for (int j = 0; j < dt.Columns.Count; j++)
  8.                 {
  9.                     objData[i, j] = dt.Rows[i][j].ToString();
  10.                 }
  11.             }
  12.             return objData;
  13.         }

2. 数据操作的代码
  1. Worksheet sheetUnknown;
  2. sheetUnknown.Name = "NYBB";
  3. Range rgeData = this.GetHeaderRange(dt, sheetUnknown);
  4. object[] objHeader = 
  5. {
  6.     "CompanyClaimID","FullCOmpanyClaimID","ValueDate","ClaimantName","MEVStatus",
  7.     "ClosedDate","Reserve","Deductible","TotalPaid","ExpensePaid","TotalIncurred",
  8.     "Description","StatusID","Effective","NamedInsured","LossTypeID","CoverageID",
  9.     "DateOfLoss","DateReported","LocationAddress","LocationCity","LocationState",
  10.     "LocationZip","CauseID","Recovery"
  11. };
  12. rgeData.Value2 = objHeader;
  13. //因为我的Excel表中有表头,所以Cell的起始行从2开始,到总行数+1... 表头的生成方法如下.
  14. sheetUnknown.get_Range(sheetUnknown.Cells[2, 1], sheetUnknown.Cells[dt.Rows.Count + 1, dt.Columns.Count]).Value2 = GetObjectArray(dt);


3.生成表头的代码
  1.         public Range GetHeaderRange(System.Data.DataTable dt,Worksheet worksheet)
  2.         {
  3.             Range rgeData = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, dt.Columns.Count]);
  4.             rgeData.Font.Bold = true;
  5.             rgeData.Font.Size = 9;
  6.             rgeData.Interior.ColorIndex = 15;
  7.             rgeData.HorizontalAlignment = XlHAlign.xlHAlignCenter;
  8.             rgeData.EntireColumn.AutoFit();
  9.             return rgeData;
  10.         }

其中dt是DataTable对象,是由select查询结果返回的.   Worksheet是Office的Excel对象,我使用的是Office2003, 但是强烈使用Office2000,兼容性可能会好一些,Office中在引用了Excel.dll之后,可以用 Excel.对象名来操作对象.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值