2017-05-23 2 views
2

Je souhaite modifier/modifier le texte d'une feuille Excel dans une zone de texte. Je parcourt toutes les entrées du sharedstringtable mais je ne le trouve pas.Remplacer le texte dans une zone de texte dans Excel à l'aide d'openXML

var sharedStringTablePart = spreadSheet.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First(); 
foreach (SharedStringItem ss in sharedStringTablePart.SharedStringTable.Elements<SharedStringItem>()) 
{ 
    if (ss.InnerText == text) 
    { 
     //Do somethinhg 
    } 
} 

Quelqu'un peut-il aider?

Répondre

2

Le texte contenu dans une zone de texte n'est pas stocké sous un sharedstringtable (je sais que c'est confus). Espérons que cela aide:

using (SpreadsheetDocument document = SpreadsheetDocument.Open(excelFile, true)) 
{ 
    string sheetName = "Sheet1"; 
    Sheet sheet = document.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>().Where(s => s.Name == sheetName).FirstOrDefault(); 

    if (sheet == null) 
    { 
     // The specified worksheet does not exist. 
     return null; 
    } 

    string relationshipId = sheet.Id.Value; 

    WorksheetPart worksheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(relationshipId); 
    var ocaElems = worksheetPart.DrawingsPart.WorksheetDrawing.Elements<OneCellAnchor>(); 

    foreach (OneCellAnchor oneCellAnchor in ocaElems) 
    { 
     var shapes = oneCellAnchor.Elements<A.Shape>(); 
     foreach (var shape in shapes) 
     { 
      var text = shape.TextBody.InnerText; 
      if(text == mytext) 
      { 
       //You found the text 
      } 
     } 
    } 
} 
+0

Merci, aidez-moi –