使用SharedStringTable在.net中使用xml sdk设置文本值
我有一段代码(下面)可以在Excel中获取特定单元格的文本,但是我不知道如何修改此文本来更改单元格文本。
public static void UpdateTextCell(string docName, string text, uint rowIndex, string columnName, string sheetName) { // Open the document for editing. using (SpreadsheetDocument spreadSheet = SpreadsheetDocument .Open(docName, true)) { WorksheetPart worksheetPart = GetWorksheetPartByName(spreadSheet, sheetName); if (worksheetPart != null) { SharedStringTablePart sharedstringtablepart=spreadSheet.WorkbookPart .GetPartsOfType<SharedStringTablePart>().First(); SharedStringTable sharedStringTable = sharedstringtablepart .SharedStringTable; Cell cell = GetCell(worksheetPart.Worksheet, columnName, rowIndex); if (cell.DataType.Value == CellValues.SharedString) { var value = cell.InnerText; value = sharedStringTable.ElementAt(int.Parse(value)).InnerText; sharedStringTable.ElementAt(int.Parse(value)).InnerXml .Replace("value", "Modified"); } // Save the worksheet. worksheetPart.Worksheet.Save(); } } }
由于sharedStringTable.ElementAt(int.Parse(value)).InnerText
是只读的,我试图用sharedStringTable.ElementAt(int.Parse(value)).InnerXml.Replace("value", "Modified");
修改文本stringsharedStringTable.ElementAt(int.Parse(value)).InnerXml.Replace("value", "Modified");
但是这也行不通。
你知道我错过了什么吗?
尝试添加
sharedStringTable.Save();
后
sharedStringTable.ElementAt(int.Parse(value)).InnerXml .Replace("value", "Modified");
replace是一个string函数,它只是返回新的string。 所有你需要做的是为InnerXml设置新的值。
sharedStringTable.ElementAt(int.Parse(value)).InnerXml = sharedStringTable.ElementAt(int.Parse(value)).InnerXml .Replace("value", "Modified");