110,536
社区成员
发帖
与我相关
我的任务
分享
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;