【发布时间】:2012-11-16 14:40:16
【问题描述】:
我有一个用于采购订单的 Excel '07 模板文件。在模板上,只有 3 行的项目空间,然后模板显示总计。
所以,基本上,在模板中它有: 第 19 行 - 项目 第 20 行 - 项目 第 21 行 - 项目 第 22 行 - 项目总数
不过,很明显,大多数购买的商品都会超过 3 件。那么在打印 3 个项目之后,我将如何插入 21 到 22 之间的一行?
编辑;所以这就是我所拥有的:
xlApp.Workbooks.Open(template, misValue, misValue, misValue,
misValue, misValue, misValue, misValue, misValue, misValue,
misValue, misValue, misValue, misValue, misValue);
int row = 19;
if (poDetailBO1.MoveFirst())
{
do
{
itemsBO3.FillByPK(poDetailBO1.Style);
if (row < 22)
{
xlApp.Cells[row, 1] = poDetailBO1.LineNo;
xlApp.Cells[row, 2] = itemsBO3.Factory;
xlApp.Cells[row, 3] = poDetailBO1.Style;
xlApp.Cells[row, 4] = itemsBO3.UPC_Code;
xlApp.Cells[row, 5] = itemsBO3.Item_Description;
xlApp.Cells[row, 6] = "TARRIFF"; //To be replaced later
xlApp.Cells[row, 7] = itemsBO3.Plate_Color;
xlApp.Cells[row, 8] = itemsBO3.Color;
xlApp.Cells[row, 9] = poDetailBO1.PrePack;
xlApp.Cells[row, 10] = itemsBO3.Cost;
xlApp.Cells[row, 11] = poDetailBO1.Qty;
xlApp.Cells[row, 12] = poDetailBO1.Qty * itemsBO3.Cost;
row++;
}
else if (row >= 22)
{
Excel.Range r = xlWorkSheet.Range[xlWorkSheet.Cells[row, misValue], xlWorkSheet.Cells[row, misValue]];
r.Insert(Excel.XlInsertShiftDirection.xlShiftDown, misValue);
r.Value2 = "GOBBLYDEEGOOK";
row++;
}
} while (poDetailBO1.MoveNext());
但是,我的插入插入到了错误的工作表中,哈哈。而不是我想象中的插入位置——第 2 行,第 19 列。
【问题讨论】:
-
你为什么不改变模板?每个 PO 3 个项目似乎太小了?你试过什么?
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
@Derek:问题是,我不知道单个 PO 上可能有多少项目......所以无论我如何更改模板,我都需要以任何一种方式插入行.除非您说要取消第 22 行的“总计”并在我完成添加项目后自己以编程方式添加它。
-
嗯,您可能需要为每张工作表设置小计,并在最后一张工作表上提供总计,因此您必须更改我想象的模板,除非已经合并。看起来 3 件商品将意味着生成更多的发票。