Ejemplo n.º 1
0
        /// <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);
            }
        }