当我尝试克隆并使用open xml插入一行时,我当前遇到了问题。
我注意到在我下面的代码中,如果srcRowIdx和refRow是相同的索引,我将能够克隆带有插入行的行并成功保存excel表。但是,如果srcRowIdx和refRow不同,则excel表将被破坏。任何人都可以告诉我为什么会这样?
include('session.php');
$productname = $_GET['productname'];
$productcode = $_GET['productcode'];
$wishlist = array("$productname" => $productcode);
$_SESSION["wishlist"] = $wishlist;
print_r($_SESSION["wishlist"]);
答案 0 :(得分:0)
好的 - 当src和ref行相等时,这是有效的原因是因为第4行:
var clonedRow = (Row)srcRow.CloneNode(true);
您永远不会更改此克隆行的RowIndex或任何CellReferences。所以它始终保持在src的索引。
当src和ref相等时,克隆节点的RowIndex和CellReferences正常,后面的每一行都递增1.并且Excel正确验证了这一点。例如,当src和ref为24时,克隆节点CellReferences保持为24,所有Rows CellReferences 24及以上都增加1,因此表单按顺序排列。
然而,假设src为24且ref为27的情况。克隆的行具有RowIndex和CellReferences,其中Index为24.当您在第27个点中插入它并将之后的所有行增加1时,则您的工作表已关闭:
(依此类推)
当Excel打开并验证时,它会在第27行窒息,如果你允许它将为你删除它。
要解决此问题,您需要将clonedRow
的RowIndex和CellReferences更新为目标行数。所以你真的很亲密。