get_Range 可以直接用 DataTabl 或 Array[,]赋值吗?

笑虾 2009-11-29 04:29:45
如题。我的实现代码如下:
这样好慢。写一个 5 * 15 的区域要 好几秒钟。 界面都被卡死了。

Excel.Application myExcel = new Excel.Application();
myExcel.Visible = false;

FileInfo mode = new FileInfo(Application.StartupPath + @"\..\..\..\单据模板\发货清单_模版.xls");
myExcel.Application.Workbooks.Open(mode.ToString(),
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);

myExcel.Names.Add(
"NewName", @"='Sheet1'!B9:G38",
Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing);


DataBase myDb = new DataBase();//自定的用于操作数据库的类
DataTable myDt = myDb.GetTable(@"SELECT 商品分类.货物编号, 商品分类.商品名称, 商品分类.规格,商品分类.单位,销售出库单明细.数量, 销售出库单明细.备注
FROM 销售出库单明细 INNER JOIN 商品分类 ON 销售出库单明细.货物编号 = 商品分类.货物编号
WHERE (销售出库单明细.单号 = N'CH000001')");

//用以下循环把查寻到的表写进 Excel 中觉得效率是个问题,如果能直接把表赋值给get_Range就好了
for (int j = 0; j < myDt.Rows.Count; j++)
{
for (int i = 0; i < myDt.Columns.Count; i++)
{
myExcel.get_Range("NewName", Type.Missing)[j+1,i+1] = myDt.Rows[j][i];
}
}

myExcel.Application.Workbooks["发货清单_模版"].SaveCopyAs(Application.StartupPath + @"\发货单.xls");


myExcel.DisplayAlerts = false;
myExcel.Quit();
myExcel.DisplayAlerts = true;

Kill(myExcel);//杀进程
myExcel = null;

...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
笑虾 2009-11-29
  • 打赏
  • 举报
回复
谢谢
_autotest 2009-11-29
  • 打赏
  • 举报
回复
如楼上所说,你的读法是cell by cell 肯定慢,通过区块来读,数据存入一个二维数组中,然后通过excel的range来填充,速度快就不用说了。
另外,如果操作excel建议用多线程处理,操作excel比较耗时。
wuyq11 2009-11-29
  • 打赏
  • 举报
回复
Excel.Range ran=app.ActiveCell;
ran=sheet.get_Range(sheet.Cells[2,1],sheet.Cells[2,2]);
ran.Value2="";

sheet.Cells[2,"A"]="";
string[,] arr=new string[2,2];
Excel.Workbook xBook = xApp.Workbooks.Add(Missing.Value);
Excel.Worksheet xSheet = (Excel.Worksheet)xBook.Worksheets[1];
xSheet.get_Range(xSheet.Cells[1,1],xSheet.Cells[2,2]).Value = arr;

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧