使用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");