0
我必須重命名使用的OpenXML Excel工作表,但是當這樣做的引用這些表將不再工作。我一直在試圖改變使用OPENXML的DefinedName
的innerXml
但不會設置的值。 這是我到目前爲止有:修改Excel的定義名稱
private void Renamesheet(string sheetName, string newSheetName, string filePath)
{
using (SpreadsheetDocument document = SpreadsheetDocument.Open(filePath, true))
{
WorkbookPart wbPart = document.WorkbookPart;
Sheet sheet = wbPart.Workbook.Descendants<Sheet>().Where(s => s.Name == sheetName).FirstOrDefault();
sheet.Name = newSheetName;
var names = wbPart.Workbook.DefinedNames.Where(x => x.InnerText.ToString().Contains("'" + sheetName + "'"));
var i = 0;
while (i < names.Count())
{
names.ElementAt(i).InnerXml = names.ElementAt(i).InnerXml.Replace(sheetName, newSheetName);
i++;
}
wbPart.Workbook.Save();
}
}
我使用while循環,而不是一個foreach因爲我讀了可能會解決這個問題,但事實並非如此。任何幫助都會很棒。
我沒有看到任何地方,你退出'using'語句之前保存更改。我不確定using語句在處置時會自動保存對磁盤的更改。嘗試顯式保存。 –
糟糕,我沒有添加到片段。這是在我的代碼,但。我現在編輯它。 – mattfetz
什麼是表格名稱?您正在用它們周圍的單引號搜索它們。如果名稱中沒有空格,則可能是它們在沒有引號的公式中。我認爲如果你想給出一個跑步的話,你的搜索也可以不用單引號。 –