/// <summary> /// Change la valeur d'une cellule par une string. /// La cellule concernée se trouve à la colonne colName et la ligne rowIndex du tableau /// sheetName lui-même dans le fichier pathToFile /// </summary> /// /// /// <param name="pathToFile"> /// Le chemin (nom et extension compris) du fichier /// </param> /// <param name="sheetName"> /// Le nom du tableau /// </param> /// <param name="colName"> /// Le nom de la colonne dans laquelle se trouve la cellule /// </param> /// <param name="rowIndex"> /// Le numéro de la ligne dans laquelle se trouve la cellule /// </param> /// <param name="newString"> /// La nouvelle string à affecter /// </param> /// /// <returns> /// true si le remplacement s'est effectué /// false si une erreur est survenue /// </returns> private static bool ChangeStringValueInCell(string pathToFile, string sheetName, string colName, int rowIndex, string newString) { // Ouverture du document using (SpreadsheetDocument doc = SpreadsheetDocument.Open(pathToFile, true)) { // Récupération du tableau nommé "Feuil1" Sheet sheet = doc.WorkbookPart.Workbook.Descendants <Sheet>() .Where(x => x.Name == sheetName).FirstOrDefault <Sheet>(); if (sheet == null) { return(false); } WorksheetPart worksheetPart = (WorksheetPart)doc.WorkbookPart.GetPartById(sheet.Id); if (worksheetPart == null) { return(false); } // Récupération de la liste des string liées SharedStringTable listeString = doc.WorkbookPart.SharedStringTablePart.SharedStringTable; // Récupération de la liste des cellules IEnumerable <Cell> listCell = worksheetPart.Worksheet.Descendants <Cell>().Where(x => x.CellReference != null); /* Récupération de la cellule */ Cell cellToModify = GetSpreadsheetCell(worksheetPart.Worksheet, colName, rowIndex); if (cellToModify == null) { return(false); } int indexOfString = Int32.Parse(cellToModify.CellValue.InnerText); listeString.ElementAt(indexOfString).Remove(); SharedStringItem newSharedStringItem = new SharedStringItem() { Text = new DocumentFormat.OpenXml.Spreadsheet.Text(newString) }; listeString.InsertAt(newSharedStringItem, indexOfString); worksheetPart.Worksheet.Save(); doc.Close(); return(true); } }