Inhaltsverzeichnis
Über NuGet installiert
PM> Install-Package Spire.Office
verwandte Links
Word und Excel sind zwei völlig unterschiedliche Dateitypen. Word-Dokumente werden zum Schreiben von Aufsätzen, Briefen oder zum Erstellen von Berichten verwendet, während Excel-Dokumente zum Speichern von Daten in tabellarischer Form, zum Erstellen von Diagrammen oder zum Durchführen mathematischer Berechnungen verwendet werden. Es wird nicht empfohlen, ein komplexes Word-Dokument in eine Excel-Tabelle zu konvertieren, da Excel den Inhalt kaum entsprechend seinem ursprünglichen Layout in Word darstellen kann.
Wenn Ihr Word-Dokument jedoch hauptsächlich aus Tabellen besteht und Sie die Tabellendaten in Excel analysieren möchten, können Sie dazu Spire.Office for .NET verwendenKonvertieren Sie Word in Excelwährend Aufrechterhaltung einer guten Lesbarkeit.
Installieren Sie Spire.Office for .NET
Zunächst müssen Sie die im Spire.Office for .NET-Paket enthaltenen DLL-Dateien als Referenzen in Ihrem .NET-Projekt hinzufügen. Die DLL-Dateien können entweder über diesen Link heruntergeladen oder über NuGet installiert werden.
PM> Install-Package Spire.Office
Konvertieren Sie Word in Excel in C# und VB.NET
In diesem Szenario werden tatsächlich zwei Bibliotheken im Spire.Office-Paket verwendet. Es handelt sich um Spire.Doc for .NET und Spire.XLS for .NET. Ersteres wird zum Lesen und Extrahieren von Inhalten aus einem Word-Dokument verwendet, und letzteres wird zum Erstellen eines Excel-Dokuments und zum Schreiben von Daten in die spezifischen Zellen verwendet. Um dieses Codebeispiel leichter verständlich zu machen, haben wir die folgenden drei benutzerdefinierten Methoden erstellt, die bestimmte Funktionen ausführen.
- ExportTableInExcel() - Daten aus einer Word-Tabelle in bestimmte Excel-Zellen exportieren.
- CopyContentInTable() - Kopieren Sie Inhalte aus einer Tabellenzelle in Word in eine Excel-Zelle.
- CopyTextAndStyle() - Text mit Formatierung aus einem Word-Absatz in eine Excel-Zelle kopieren.
Die folgenden Schritte veranschaulichen, wie Sie mit Spire.Office for .NET Daten aus einem gesamten Word-Dokument in ein Arbeitsblatt exportieren.
- Erstellen Sie ein Document-Objekt, um eine Word-Datei zu laden.
- Erstellen Sie ein Worbbook-Objekt und fügen Sie ihm ein Arbeitsblatt mit dem Namen „WordToExcel“ hinzu.
- Durchlaufen Sie alle Abschnitte im Word-Dokument, durchlaufen Sie alle Dokumentobjekte unter einem bestimmten Abschnitt und bestimmen Sie dann, ob es sich bei einem Dokumentobjekt um einen Absatz oder eine Tabelle handelt.
- Wenn das Dokumentobjekt ein Absatz ist, schreiben Sie den Absatz mithilfe der CoypTextAndStyle()-Methode in eine bestimmte Zelle in Excel.
- Wenn das Dokumentobjekt eine Tabelle ist, exportieren Sie die Tabellendaten mit der Methode ExportTableInExcel() aus Word- in Excel-Zellen.
- Passen Sie die Zeilenhöhe und Spaltenbreite in Excel automatisch an, sodass die Daten in einer Zelle die Zellgrenze nicht überschreiten.
- Speichern Sie die Arbeitsmappe mit der Methode Workbook.SaveToFile() in einer Excel-Datei.
- C#
- VB.NET
using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using Spire.Xls; using System; using System.Drawing; namespace ConvertWordToExcel { class Program { static void Main(string[] args) { //Create a Document object Document doc = new Document(); //Load a Word file doc.LoadFromFile(@"C:\Users\Administrator\Desktop\Invoice.docx"); //Create a Workbook object Workbook wb = new Workbook(); //Remove the default worksheets wb.Worksheets.Clear(); //Create a worksheet named "WordToExcel" Worksheet worksheet = wb.CreateEmptySheet("WordToExcel"); int row = 1; int column = 1; //Loop through the sections in the Word document foreach (Section section in doc.Sections) { //Loop through the document object under a certain section foreach (DocumentObject documentObject in section.Body.ChildObjects) { //Determine if the object is a paragraph if (documentObject is Paragraph) { CellRange cell = worksheet.Range[row, column]; Paragraph paragraph = documentObject as Paragraph; //Copy paragraph from Word to a specific cell CopyTextAndStyle(cell, paragraph); row++; } //Determine if the object is a table if (documentObject is Table) { Table table = documentObject as Table; //Export table data from Word to Excel int currentRow = ExportTableInExcel(worksheet, row, table); row = currentRow; } } } //Auto fit row height and column width worksheet.AllocatedRange.AutoFitRows(); worksheet.AllocatedRange.AutoFitColumns(); //Wrap text in cells worksheet.AllocatedRange.IsWrapText = true; //Save the workbook to an Excel file wb.SaveToFile("WordToExcel.xlsx", ExcelVersion.Version2013); } //Export data from Word table to Excel cells private static int ExportTableInExcel(Worksheet worksheet, int row, Table table) { CellRange cell; int column; foreach (TableRow tbRow in table.Rows) { column = 1; foreach (TableCell tbCell in tbRow.Cells) { cell = worksheet.Range[row, column]; cell.BorderAround(LineStyleType.Thin, Color.Black); CopyContentInTable(tbCell, cell); column++; } row++; } return row; } //Copy content from a Word table cell to an Excel cell private static void CopyContentInTable(TableCell tbCell, CellRange cell) { Paragraph newPara = new Paragraph(tbCell.Document); for (int i = 0; i < tbCell.ChildObjects.Count; i++) { DocumentObject documentObject = tbCell.ChildObjects[i]; if (documentObject is Paragraph) { Paragraph paragraph = documentObject as Paragraph; foreach (DocumentObject cObj in paragraph.ChildObjects) { newPara.ChildObjects.Add(cObj.Clone()); } if (i < tbCell.ChildObjects.Count - 1) { newPara.AppendText("\n"); } } } CopyTextAndStyle(cell, newPara); } //Copy text and style of a paragraph to a cell private static void CopyTextAndStyle(CellRange cell, Paragraph paragraph) { RichText richText = cell.RichText; richText.Text = paragraph.Text; int startIndex = 0; foreach (DocumentObject documentObject in paragraph.ChildObjects) { if (documentObject is TextRange) { TextRange textRange = documentObject as TextRange; string fontName = textRange.CharacterFormat.FontName; bool isBold = textRange.CharacterFormat.Bold; Color textColor = textRange.CharacterFormat.TextColor; float fontSize = textRange.CharacterFormat.FontSize; string textRangeText = textRange.Text; int strLength = textRangeText.Length; ExcelFont font = cell.Worksheet.Workbook.CreateFont(); font.Color = textColor; font.IsBold = isBold; font.Size = fontSize; font.FontName = fontName; int endIndex = startIndex + strLength; richText.SetFont(startIndex, endIndex, font); startIndex += strLength; } if (documentObject is DocPicture) { DocPicture picture = documentObject as DocPicture; cell.Worksheet.Pictures.Add(cell.Row, cell.Column, picture.Image); cell.Worksheet.SetRowHeightInPixels(cell.Row, 1, picture.Image.Height); } } switch (paragraph.Format.HorizontalAlignment) { case HorizontalAlignment.Left: cell.Style.HorizontalAlignment = HorizontalAlignType.Left; break; case HorizontalAlignment.Center: cell.Style.HorizontalAlignment = HorizontalAlignType.Center; break; case HorizontalAlignment.Right: cell.Style.HorizontalAlignment = HorizontalAlignType.Right; break; } } } }
Beantragen Sie eine temporäre Lizenz
Wenn Sie die Bewertungsmeldung aus den generierten Dokumenten entfernen oder die Funktionseinschränkungen beseitigen möchten, wenden Sie sich bitte an uns Fordern Sie eine 30-Tage-Testlizenz an für sich selbst.