IRONWORD VERWENDEN

ASP .NET Core Importieren & Exportieren einer Word-Datei

Veröffentlicht 16. Dezember 2024
Teilen Sie:

Einführung

Dieser Leitfaden untersucht, wie bestehende Word-Dokumente importiert, deren Inhalte angezeigt und Dokumente von Grund auf neu erstellt werden können mithilfe der IronWord-Bibliothek. Am Ende dieses Tutorials haben Sie einASP.NET CoreWebanwendung, die Folgendes kann:

  1. Word-Dokumente hochladen und lesen

  2. Zeigen Sie den Inhalt dieser Dokumente in einem Textfeld an.

  3. Exportieren Sie die Docx-Datei

    Dieses Projekt ist perfekt für Entwickler, die die Verarbeitung von Word-Dokumenten in ihre Webanwendungen integrieren müssen, sei es für Dokumentenmanagementsysteme, Berichtsgeneratoren oder andere Szenarien, die Microsoft Word-Dateien umfassen.

Voraussetzungen

Um diesem Tutorial zu folgen, sollten Sie Folgendes haben:

  • Grundkenntnisse in C# und ASP.NET Core
  • Visual Studio 2019 oder neuer installiert(alternativ können Sie Visual Studio Code mit der C#-Erweiterung verwenden)
  • .NET Core SDK 3.1 oder höher

    Keine Sorge, wenn Sie kein Experte in diesen Technologien sind – wir führen Sie Schritt für Schritt durch den Prozess.!

Was ist IronWord?

IronWordist eine .NET-Bibliothek, die Entwicklern ermöglicht, Microsoft Word-Dokumente programmatisch zu lesen, zu manipulieren und zu erstellen. Es bietet eine High-Level-API, die die Arbeit mit Word-Dateien vereinfacht und es zu einer ausgezeichneten Wahl für unser Projekt macht.

Einige Hauptmerkmale von IronWord umfassen:

  • Lesen undVerschiedene Word-Formate schreiben (DOCX, DOC, usw.)
  • Manipulation von Dokumentinhalten und -strukturen
  • Formatierung von Text und Absätzen
  • Arbeiten mit Tabellen, Bildern und anderen Dokumentelementen
  • Serienbriefformular für die Dokumente
  • Die Umwandlung eines Word-Dokuments in ein PDF-Dokument ist einfach, sodass Sie Ihre endgültigen Word-Dokumente in leicht teilbare PDF-Dateien umwandeln können.

    Da wir nun einen Überblick darüber haben, was wir bauen und welche Tools wir verwenden werden, lassen Sie uns mit der Einrichtung unseres Projekts beginnen.!

2. Einrichten des Projekts

In diesem Abschnitt erstellen wir ein neues ASP.NET Core-Projekt und installieren die erforderlichen Pakete, um mit IronWord zu arbeiten.

2.1 Erstellen eines neuen ASP.NET Core-Projekts

  1. Öffnen Sie Visual Studio 2019 oder später.

  2. Klicken Sie auf "Ein neues Projekt erstellen".

    1. Suchen Sie nach "ASP.NET Core Web Application" und wählen Sie es aus.

    Kaputtes Bild Von Pixabay hinzufügen, aus Ihren Dateien auswählen oder ein Bild hierher ziehen.

  3. Klicken Sie auf "Weiter".

  4. Nennen Sie Ihr Projekt „WordDocumentProcessor“(oder ein beliebiger Name Ihrer Wahl).

  5. Wählen Sie das .NET Framework und einen Speicherort für Ihr Projekt aus und klicken Sie auf „Erstellen“.

2.2 Installation des IronWord NuGet-Pakets

Da wir nun unser Projekt eingerichtet haben, lassen Sie uns die IronWord-Bibliothek hinzufügen:

  1. Klicken Sie mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer.

  2. Wählen Sie "NuGet-Pakete verwalten".

    1. Im "Durchsuchen"-Tab suchen Sie nach "IronWord".

    Kaputtes Bild Von Pixabay hinzufügen, aus Ihren Dateien auswählen oder ein Bild hierher ziehen.

  3. Suchen Sie nach dem offiziellen IronWord-Paket.

  4. Klicken Sie auf "Installieren", um es zu Ihrem Projekt hinzuzufügen.

2.3 Aktualisieren des vorhandenen Controllers und der Ansicht

Lassen Sie uns unsere bestehende Struktur aktualisieren, um die Dokumentverarbeitungsfunktionalität einzubinden:

  1. Wir werden den bestehenden HomeController.cs im Controllers-Ordner für unsere Dokumentenverarbeitung verwenden.

  2. Wir werden die bestehende Index.cshtml-Ansicht im Ordner Views/Home aktualisieren, um die Dokument-Upload- und Anzeige-Funktionalität einzuschließen.

    Jetzt, da wir unser Projekt eingerichtet und das IronWord-Paket installiert haben, sind wir bereit, die Import- und Exportfunktionalität für Dokumente zu implementieren. Wir werden neue Methoden zu unserem HomeController hinzufügen und die Index-Ansicht anpassen, um diese Funktionen zu unterstützen. Im nächsten Abschnitt konzentrieren wir uns auf das Importieren von Word-Dokumenten und das Anzeigen ihres Inhalts, unter Nutzung unserer bestehenden Controller- und View-Struktur. Wir können auch eine Serienbrieffunktion hinzufügen, aber in diesem Artikel konzentrieren wir uns auf das Importieren und Exportieren von Dokumenten.

3. Importieren von Word-Dokumenten

In diesem Abschnitt werden wir untersuchen, wie eine Funktion zum Importieren und Verarbeiten von Word-Dokumenten in einer ASP.NET MVC-Anwendung implementiert werden kann. Wir werden sowohl das Design der Benutzeroberfläche als auch die Logik des Back-End-Controllers behandeln.

3.1 Benutzeroberflächendesign

Die Benutzeroberfläche zum Importieren von Word-Dokumenten ist benutzerfreundlich und optisch ansprechend gestaltet. Lassen Sie uns die Hauptkomponenten der Benutzeroberfläche aufschlüsseln:

3.1.1 Upload-Bereich

Der Upload-Bereich ist der zentrale Punkt der Benutzeroberfläche und lädt Benutzer dazu ein, ihre Word-Dokumente auszuwählen und hochzuladen. Hier ist die Struktur:

<div class="upload-area">
    <svg class="file-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
    <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
    <polyline points="14 2 14 8 20 8"></polyline>
    <line x1="16" y1="13" x2="8" y2="13"></line>
    <line x1="16" y1="17" x2="8" y2="17"></line>
    <polyline points="10 9 9 9 8 9"></polyline>
</svg>
    <p>Choose a Word document</p>
    <label for="fileInput" class="choose-file">Choose File</label>
    <p class="file-info">.DOC or .DOCX (MAX. 10MB)</p>
    <button id="uploadBtn" class="upload-button">Upload and Process</button>
</div>
<div class="upload-area">
    <svg class="file-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
    <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
    <polyline points="14 2 14 8 20 8"></polyline>
    <line x1="16" y1="13" x2="8" y2="13"></line>
    <line x1="16" y1="17" x2="8" y2="17"></line>
    <polyline points="10 9 9 9 8 9"></polyline>
</svg>
    <p>Choose a Word document</p>
    <label for="fileInput" class="choose-file">Choose File</label>
    <p class="file-info">.DOC or .DOCX (MAX. 10MB)</p>
    <button id="uploadBtn" class="upload-button">Upload and Process</button>
</div>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<div class="upload-area"> <svg class="file-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path> <polyline points="14 2 14 8 20 8"></polyline> <line x1="16" y1="13" x2="8" y2="13"></line> <line x1="16" y1="17" x2="8" y2="17"></line> <polyline points="10 9 9 9 8 9"></polyline> </svg> <p> Choose a Word document</p> <label for="fileInput" class="choose-file"> Choose File</label> <p class="file-info">.DOC @or.DOCX(MAX. 10MB)</p> <button id="uploadBtn" class="upload-button"> Upload @and Process</button> </div>
VB   C#

Dieser Code erstellt einen optisch ansprechenden Upload-Bereich mit einem Dateisymbol, einem versteckten Dateieingabefeld und einem gestalteten Label, das als Dateiauswahlknopf dient. Es enthält auch Informationen über akzeptierte Dateitypen und einen Button, um den Upload und die Verarbeitung zu starten.

3.1.2 Inhaltsanzeigebereich

Nach der Verarbeitung des Dokuments wird dessen Inhalt in einem speziellen Bereich angezeigt:

<div class="content-wrapper">
    <h2>Document Content:</h2>
    <div id="documentContent" class="content-area">
        No content to display.
    </div>
</div>
<div class="content-wrapper">
    <h2>Document Content:</h2>
    <div id="documentContent" class="content-area">
        No content to display.
    </div>
</div>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<div class="content-wrapper"> <h2> Document Content:</h2> <div id="documentContent" class="content-area"> No content @to display. </div> </div>
VB   C#

Dieser Abschnitt bietet einen scrollbaren Bereich zur Anzeige des bearbeiteten Dokumentinhalts.

3.2 Controller-Implementierung

Der HomeController übernimmt die serverseitige Logik für das Importieren und Verarbeiten von Word-Dokumenten. Lassen Sie uns die wichtigsten Methoden untersuchen:

3.2.1 UploadAndProcess-Methode

Diese Methode ist verantwortlich für das Hochladen und Verarbeiten von Dateien:

[HttpPost]
public IActionResult UploadAndProcess(IFormFile file)
{
    if (file == null 
 file.Length == 0)
    {
        return Json(new { success = false, message = "No file uploaded." });
    }
    var fileExtension = Path.GetExtension(file.FileName).ToLowerInvariant();
    if (fileExtension != ".doc" && fileExtension != ".docx")
    {
        return Json(new { success = false, message = "Invalid file type. Please upload a .doc or .docx file." });
    }
    try
    {
        var tempFilePath = Path.GetTempFileName();
        using (var stream = new FileStream(tempFilePath, FileMode.Create))
        {
            file.CopyTo(stream);
        }
        StringBuilder contentBuilder = new StringBuilder();
        WordDocument doc = new WordDocument(tempFilePath);
        foreach (Paragraph paragraph in doc.Paragraphs)
        {
            foreach (Text textRun in paragraph.Texts)
            {
                contentBuilder.AppendLine(textRun.Text);
            }
            contentBuilder.AppendLine(); // Add an extra line between paragraphs
        }
        System.IO.File.Delete(tempFilePath); // Clean up the temporary file
        return Json(new { success = true, content = FormatContentAsHtml(contentBuilder.ToString()) });
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error processing document");
        return Json(new { success = false, message = "An error occurred while processing the document." });
    }
}
[HttpPost]
public IActionResult UploadAndProcess(IFormFile file)
{
    if (file == null 
 file.Length == 0)
    {
        return Json(new { success = false, message = "No file uploaded." });
    }
    var fileExtension = Path.GetExtension(file.FileName).ToLowerInvariant();
    if (fileExtension != ".doc" && fileExtension != ".docx")
    {
        return Json(new { success = false, message = "Invalid file type. Please upload a .doc or .docx file." });
    }
    try
    {
        var tempFilePath = Path.GetTempFileName();
        using (var stream = new FileStream(tempFilePath, FileMode.Create))
        {
            file.CopyTo(stream);
        }
        StringBuilder contentBuilder = new StringBuilder();
        WordDocument doc = new WordDocument(tempFilePath);
        foreach (Paragraph paragraph in doc.Paragraphs)
        {
            foreach (Text textRun in paragraph.Texts)
            {
                contentBuilder.AppendLine(textRun.Text);
            }
            contentBuilder.AppendLine(); // Add an extra line between paragraphs
        }
        System.IO.File.Delete(tempFilePath); // Clean up the temporary file
        return Json(new { success = true, content = FormatContentAsHtml(contentBuilder.ToString()) });
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error processing document");
        return Json(new { success = false, message = "An error occurred while processing the document." });
    }
}
<HttpPost>
Public Function UploadAndProcess(ByVal file As IFormFile) As IActionResult
	If file Is Nothing file.Length = 0 Then
		Return Json(New With {
			Key .success = False,
			Key .message = "No file uploaded."
		})
	End If
	Dim fileExtension = Path.GetExtension(file.FileName).ToLowerInvariant()
	If fileExtension <> ".doc" AndAlso fileExtension <> ".docx" Then
		Return Json(New With {
			Key .success = False,
			Key .message = "Invalid file type. Please upload a .doc or .docx file."
		})
	End If
	Try
		Dim tempFilePath = Path.GetTempFileName()
		Using stream = New FileStream(tempFilePath, FileMode.Create)
			file.CopyTo(stream)
		End Using
		Dim contentBuilder As New StringBuilder()
		Dim doc As New WordDocument(tempFilePath)
		For Each paragraph As Paragraph In doc.Paragraphs
			For Each textRun As Text In paragraph.Texts
				contentBuilder.AppendLine(textRun.Text)
			Next textRun
			contentBuilder.AppendLine() ' Add an extra line between paragraphs
		Next paragraph
		System.IO.File.Delete(tempFilePath) ' Clean up the temporary file
		Return Json(New With {
			Key .success = True,
			Key .content = FormatContentAsHtml(contentBuilder.ToString())
		})
	Catch ex As Exception
		_logger.LogError(ex, "Error processing document")
		Return Json(New With {
			Key .success = False,
			Key .message = "An error occurred while processing the document."
		})
	End Try
End Function
VB   C#

Diese Methode führt die folgenden Aufgaben aus:

  1. Validiert die hochgeladene Datei und stellt sicher, dass sie im richtigen Dateiformat vorliegt.(DOC oder DOCX)

  2. Überprüft die korrekte Dateierweiterung

  3. Verarbeitet das Dokument mit der IronWord-Bibliothek

  4. Gibt den formatierten Inhalt als JSON zurück

3.2.2 FormatContentAsHtml-Methode

Diese private Methode formatiert den extrahierten Inhalt in HTML:

private string FormatContentAsHtml(string content)
{
    var lines = content.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
    var htmlBuilder = new StringBuilder();
    htmlBuilder.Append("<div class='document-content'>");
    foreach (var line in lines)
    {
        if (string.IsNullOrWhiteSpace(line))
        {
            htmlBuilder.Append("<p> </p>");
        }
        else
        {
            htmlBuilder.Append($"<p>{HttpUtility.HtmlEncode(line)}</p>");
        }
    }
    htmlBuilder.Append("</div>");
    return htmlBuilder.ToString();
}
private string FormatContentAsHtml(string content)
{
    var lines = content.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
    var htmlBuilder = new StringBuilder();
    htmlBuilder.Append("<div class='document-content'>");
    foreach (var line in lines)
    {
        if (string.IsNullOrWhiteSpace(line))
        {
            htmlBuilder.Append("<p> </p>");
        }
        else
        {
            htmlBuilder.Append($"<p>{HttpUtility.HtmlEncode(line)}</p>");
        }
    }
    htmlBuilder.Append("</div>");
    return htmlBuilder.ToString();
}
Private Function FormatContentAsHtml(ByVal content As String) As String
	Dim lines = content.Split( { Environment.NewLine }, StringSplitOptions.None)
	Dim htmlBuilder = New StringBuilder()
	htmlBuilder.Append("<div class='document-content'>")
	For Each line In lines
		If String.IsNullOrWhiteSpace(line) Then
			htmlBuilder.Append("<p> </p>")
		Else
			htmlBuilder.Append($"<p>{HttpUtility.HtmlEncode(line)}</p>")
		End If
	Next line
	htmlBuilder.Append("</div>")
	Return htmlBuilder.ToString()
End Function
VB   C#

Diese Methode stellt sicher, dass der Dokumentinhalt korrekt als HTML formatiert wird, wobei jede Zeile in Paragraph-Tags eingeschlossen ist und leere Zeilen erhalten bleiben.

3.3 Client-seitiges JavaScript

Um den Datei-Upload zu bearbeiten und den verarbeiteten Inhalt anzuzeigen, verwenden wir JavaScript:

uploadBtn.addEventListener('click', () => {
    const file = fileInput.files[0];
    if (!file) {
        alert('Please select a file first.');
        return;
    }
    const formData = new FormData();
    formData.append('file', file);
    uploadBtn.disabled = true;
    uploadBtn.textContent = 'Processing...';
    documentContent.innerHTML = 'Processing document...';
    fetch('/Home/UploadAndProcess', {
        method: 'POST',
        body: formData
    })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                documentContent.innerHTML = data.content;
            } else {
                documentContent.innerHTML = `<p>Error: ${data.message}</p>`;
            }
        })
        .catch(error => {
            console.error('Error:', error);
            documentContent.innerHTML = '<p>An error occurred while processing the document.</p>';
        })
        .finally(() => {
            uploadBtn.disabled = false;
            uploadBtn.textContent = 'Upload and Process';
        });
});
uploadBtn.addEventListener('click', () => {
    const file = fileInput.files[0];
    if (!file) {
        alert('Please select a file first.');
        return;
    }
    const formData = new FormData();
    formData.append('file', file);
    uploadBtn.disabled = true;
    uploadBtn.textContent = 'Processing...';
    documentContent.innerHTML = 'Processing document...';
    fetch('/Home/UploadAndProcess', {
        method: 'POST',
        body: formData
    })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                documentContent.innerHTML = data.content;
            } else {
                documentContent.innerHTML = `<p>Error: ${data.message}</p>`;
            }
        })
        .catch(error => {
            console.error('Error:', error);
            documentContent.innerHTML = '<p>An error occurred while processing the document.</p>';
        })
        .finally(() => {
            uploadBtn.disabled = false;
            uploadBtn.textContent = 'Upload and Process';
        });
});
uploadBtn.addEventListener( 'click', () =>
If True Then
	const file = fileInput.files(0)
	If Not file Then
		alert( 'Please select a file first.');
		Return
	End If
	const formData = New FormData()
	formData.append( 'file', file);
	uploadBtn.disabled = True
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	uploadBtn.textContent = 'Processing...'; documentContent.innerHTML = 'Processing document...'; fetch('/Home/UploadAndProcess', { method: 'POST', body: formData }).@then(response => response.json()).@then(data => { if(data.success) { documentContent.innerHTML = data.content; } else { documentContent.innerHTML = `<p> @Error: ${data.message}</p>`; } }).catch(@error => { console.@error('@Error:', @error); documentContent.innerHTML = '<p> An @error occurred while processing the document.</p>'; }).finally(() => { uploadBtn.disabled = False; uploadBtn.textContent = 'Upload @and Process'; }); });
VB   C#

Dieser JavaScript-Code verarbeitet den Datei-Upload, sendet die Datei zur Verarbeitung an den Server und aktualisiert die Benutzeroberfläche mit dem verarbeiteten Inhalt oder Fehlermeldungen.

3.4 Gestaltung der Benutzeroberfläche

Die Anwendung verwendet benutzerdefiniertes CSS, um eine attraktive und benutzerfreundliche Oberfläche zu erstellen.

<style>
    body {
        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        background-color: #f7f7f7;
        color: #333;
    }
    .container {
        max-width: 800px;
        margin: 0 auto;
        padding: 2rem;
        padding-top: 0.5rem;
    }
    h1 {
        font-weight: 300;
        color: #2c3e50;
        text-align: center;
        margin-bottom: 1rem;
    }
    .lead {
        text-align: center;
        color: #7f8c8d;
        margin-bottom: 2rem;
    }
    .upload-area {
        background-color: #ffffff;
        border-radius: 8px;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
        padding: 2rem;
        text-align: center;
        margin-bottom: 2rem;
        transition: all 0.3s ease;
    }
        .upload-area:hover {
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
        }
    .file-icon {
        width: 64px;
        height: 64px;
        margin-bottom: 1rem;
        color: #3498db;
    }
    .choose-file {
        background-color: #ecf0f1;
        color: #2c3e50;
        border: none;
        padding: 0.5rem 1rem;
        border-radius: 4px;
        cursor: pointer;
        transition: background-color 0.3s ease;
    }
        .choose-file:hover {
            background-color: #d5dbdb;
        }
    .file-info {
        font-size: 0.9em;
        color: #95a5a6;
        margin-top: 0.5rem;
    }
    .upload-button {
        background-color: #3498db;
        color: white;
        border: none;
        padding: 0.75rem 1.5rem;
        border-radius: 4px;
        cursor: pointer;
        transition: background-color 0.3s ease;
        margin-top: 1rem;
    }
        .upload-button:hover {
            background-color: #2980b9;
        }
    .content-wrapper {
        background-color: #ffffff;
        border-radius: 8px;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
        padding: 1rem;
        margin-top: 2rem;
    }
    .content-area {
        max-height: 300px;
        overflow-y: auto;
        padding: 1rem;
        background-color: #f9f9f9;
        border-radius: 4px;
        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        font-size: 14px;
        line-height: 1.6;
    }
        .content-area::-webkit-scrollbar {
            width: 8px;
        }
        .content-area::-webkit-scrollbar-track {
            background: #f1f1f1;
            border-radius: 4px;
        }
        .content-area::-webkit-scrollbar-thumb {
            background: #bdc3c7;
            border-radius: 4px;
        }
            .content-area::-webkit-scrollbar-thumb:hover {
                background: #95a5a6;
            }
    .document-content p {
        margin: 0 0 10px 0;
    }
</style>
<style>
    body {
        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        background-color: #f7f7f7;
        color: #333;
    }
    .container {
        max-width: 800px;
        margin: 0 auto;
        padding: 2rem;
        padding-top: 0.5rem;
    }
    h1 {
        font-weight: 300;
        color: #2c3e50;
        text-align: center;
        margin-bottom: 1rem;
    }
    .lead {
        text-align: center;
        color: #7f8c8d;
        margin-bottom: 2rem;
    }
    .upload-area {
        background-color: #ffffff;
        border-radius: 8px;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
        padding: 2rem;
        text-align: center;
        margin-bottom: 2rem;
        transition: all 0.3s ease;
    }
        .upload-area:hover {
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
        }
    .file-icon {
        width: 64px;
        height: 64px;
        margin-bottom: 1rem;
        color: #3498db;
    }
    .choose-file {
        background-color: #ecf0f1;
        color: #2c3e50;
        border: none;
        padding: 0.5rem 1rem;
        border-radius: 4px;
        cursor: pointer;
        transition: background-color 0.3s ease;
    }
        .choose-file:hover {
            background-color: #d5dbdb;
        }
    .file-info {
        font-size: 0.9em;
        color: #95a5a6;
        margin-top: 0.5rem;
    }
    .upload-button {
        background-color: #3498db;
        color: white;
        border: none;
        padding: 0.75rem 1.5rem;
        border-radius: 4px;
        cursor: pointer;
        transition: background-color 0.3s ease;
        margin-top: 1rem;
    }
        .upload-button:hover {
            background-color: #2980b9;
        }
    .content-wrapper {
        background-color: #ffffff;
        border-radius: 8px;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
        padding: 1rem;
        margin-top: 2rem;
    }
    .content-area {
        max-height: 300px;
        overflow-y: auto;
        padding: 1rem;
        background-color: #f9f9f9;
        border-radius: 4px;
        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        font-size: 14px;
        line-height: 1.6;
    }
        .content-area::-webkit-scrollbar {
            width: 8px;
        }
        .content-area::-webkit-scrollbar-track {
            background: #f1f1f1;
            border-radius: 4px;
        }
        .content-area::-webkit-scrollbar-thumb {
            background: #bdc3c7;
            border-radius: 4px;
        }
            .content-area::-webkit-scrollbar-thumb:hover {
                background: #95a5a6;
            }
    .document-content p {
        margin: 0 0 10px 0;
    }
</style>
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'(Of style) body
'{
''INSTANT VB TODO TASK: The following line uses invalid syntax:
''		font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f7f7f7; color: #333; } .container { max-width: 800px; margin: 0 auto; padding: 2rem; padding-top: 0.5rem; } h1 { font-weight: 300; color: #2c3e50; text-align: center; margin-bottom: 1rem; } .lead { text-align: center; color: #7f8c8d; margin-bottom: 2rem; } .upload-area { background-color: #ffffff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); padding: 2rem; text-align: center; margin-bottom: 2rem; transition: all 0.3s ease; } .upload-area:hover { box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); } .file-icon { width: 64px; height: 64px; margin-bottom: 1rem; color: #3498db; } .choose-file { background-color: #ecf0f1; color: #2c3e50; border: none; padding: 0.5rem 1rem; border-radius: 4px; cursor: pointer; transition: background-color 0.3s ease; } .choose-file:hover { background-color: #d5dbdb; } .file-info { font-size: 0.9em; color: #95a5a6; margin-top: 0.5rem; } .upload-button { background-color: #3498db; color: white; border: none; padding: 0.75rem 1.5rem; border-radius: 4px; cursor: pointer; transition: background-color 0.3s ease; margin-top: 1rem; } .upload-button:hover { background-color: #2980b9; } .content-wrapper { background-color: #ffffff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); padding: 1rem; margin-top: 2rem; } .content-area { max-height: 300px; overflow-y: auto; padding: 1rem; background-color: #f9f9f9; border-radius: 4px; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-size: 14px; line-height: 1.6; } .content-area::-webkit-scrollbar { width: 8px; } .content-area::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 4px; } .content-area::-webkit-scrollbar-thumb { background: #bdc3c7; border-radius: 4px; } .content-area::-webkit-scrollbar-thumb:hover { background: #95a5a6; } .document-content p { margin: 0 0 10px 0; } </style>
VB   C#

Dieses CSS erzeugt einen sauberen, modernen Look mit einem hellen Farbschema. Der Upload-Bereich verfügt über einen weißen Hintergrund mit subtilen Schatteneffekten, während der Inhaltsbereich ein scrollbares Design mit einem hellgrauen Hintergrund aufweist. Die Verwendung der Eigenschaften border-radius und box-shadow verleiht den Schnittstellenelementen Tiefe und visuelles Interesse.

4. Exportieren von Word-Dokumenten

Während wir unseren Word Document Processor weiter verbessern, lassen Sie uns die Fähigkeit zum Exportieren von Dokumenten hinzufügen. Diese Funktion ermöglicht es den Benutzern, ein neues Word-Dokument aus unserer Anwendung zu erstellen.

4.1 Aktualisieren der Benutzeroberfläche

Zuerst fügen wir unserer Navigationsleiste eine "Exportieren"-Option hinzu. Öffnen Sie die Datei _Layout.cshtml im Ordner Views/Shared und suchen Sie die

element. Fügen wir einen neuen Listeneintrag für unsere Exportfunktion hinzu:

<li class="nav-item">
    <a class="nav-link" id="exportLink" href="#" onclick="exportDocument(); return false;"><i class="fas fa-file-export"></i> Export</a>
</li>
<li class="nav-item">
    <a class="nav-link" id="exportLink" href="#" onclick="exportDocument(); return false;"><i class="fas fa-file-export"></i> Export</a>
</li>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<li class="nav-item"> <a class="nav-link" id="exportLink" href="#" onclick="exportDocument(); return false;"><i class="fas fa-file-export"></i> Export</a> </li>
VB   C#

Wir verwenden Font Awesome für das Symbol. Stellen Sie also sicher, dass wir den CSS-Link in unserem ... haben.

Abschnitt. Dieser Code fügt der Navigationsleiste einen "Exportieren"-Link hinzu. Es verwendet Font Awesome für das Symbol und ruft die exportDocument-Funktion auf.() Funktion beim Klicken. Das href="#"** und return false verhindern das Standardverhalten des Links.

4.2 Implementierung der Client-seitigen Exportlogik

Fügen wir nun die JavaScript-Funktion hinzu, die den Exportvorgang übernimmt. At the bottom of our _Layout.cshtml file, just before the closing

tag, we'll add the following script:

<script>
function exportDocument() {
    $.ajax({
        url: '/Home/ExportWordDocument',
        type: 'POST',
        success: function (response) {
            if (response.success) {
                var fileName = prompt("Enter a name for the document (without extension):", "ExportedDocument");
                if (fileName === null) {
                    return;
                }
                fileName = (fileName.trim() 
 "ExportedDocument").replace(/\.[^/.]+$/, "") + ".docx";
                var a = document.createElement('a');
                a.style.display = 'none';
                a.href = '/Home/DownloadFile?tempFilePath=' + encodeURIComponent(response.tempFilePath) + '&userFileName=' + encodeURIComponent(fileName);
                document.body.appendChild(a);
                a.click();
                document.body.removeChild(a);
            } else {
                alert('Failed to export document: ' + response.message);
            }
        },
        error: function () {
            alert('An error occurred while exporting the document.');
        }
    });
}
</script>
<script>
function exportDocument() {
    $.ajax({
        url: '/Home/ExportWordDocument',
        type: 'POST',
        success: function (response) {
            if (response.success) {
                var fileName = prompt("Enter a name for the document (without extension):", "ExportedDocument");
                if (fileName === null) {
                    return;
                }
                fileName = (fileName.trim() 
 "ExportedDocument").replace(/\.[^/.]+$/, "") + ".docx";
                var a = document.createElement('a');
                a.style.display = 'none';
                a.href = '/Home/DownloadFile?tempFilePath=' + encodeURIComponent(response.tempFilePath) + '&userFileName=' + encodeURIComponent(fileName);
                document.body.appendChild(a);
                a.click();
                document.body.removeChild(a);
            } else {
                alert('Failed to export document: ' + response.message);
            }
        },
        error: function () {
            alert('An error occurred while exporting the document.');
        }
    });
}
</script>
Private Function exportDocument() As [function](Of script)
	$.ajax({ url: '/Home/ExportWordDocument', type: 'POST', success: @function(response) { if(response.success) { var fileName = prompt("Enter a name for the document (without extension):", "ExportedDocument"); if(fileName === Nothing) { Return; } fileName = (fileName.trim() "ExportedDocument").replace(/\.[^/.]+$/, "") + ".docx"; var a = document.createElement("a"c); a.style.display = 'none'; a.href = '/Home/System.Nullable<DownloadFile>tempFilePath=' + encodeURIComponent(response.tempFilePath) + '&userFileName=' + encodeURIComponent(fileName); document.body.appendChild(a); a.click(); document.body.removeChild(a); } else { alert('Failed @to export document: ' + response.message); } }, @error: @function() { alert('An @error occurred while exporting the document.'); } });
 End Function
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'</script>
VB   C#

Diese JavaScript-Funktion sendet eine AJAX-POST-Anfrage an den Server, um ein Word-Dokument zu erstellen. Bei Erfolg wird der Benutzer nach einem Dateinamen gefragt und es wird ein temporärer Link zum Herunterladen der Datei erstellt. Der Link wird automatisch geklickt und anschließend aus dem DOM entfernt. Wenn in irgendeiner Phase ein Fehler auftritt, wird dem Benutzer eine Warnung angezeigt.

4.3 Hinzufügen von serverseitiger Exportfunktionalität

Nun, lassen Sie uns die serverseitige Logik implementieren. Öffnen Sie die Datei HomeController.cs im Ordner Controllers. Wir werden zwei neue Methoden hinzufügen, um den Exportprozess zu bearbeiten.

Zuerst fügen wir die Methode hinzu, um das Word-Dokument zu erstellen:

[HttpPost]
public IActionResult ExportWordDocument()
{
    try
    {
        WordDocument doc = new WordDocument();
        doc.AddText("Test Word");
        string tempFileName = $"TempDoc_{Guid.NewGuid()}.docx";
        string tempFilePath = Path.Combine(_environment.WebRootPath, "TempFiles", tempFileName);
        Directory.CreateDirectory(Path.GetDirectoryName(tempFilePath));
        doc.SaveAs(tempFilePath);
        return Json(new { success = true, tempFilePath = $"/TempFiles/{tempFileName}" });
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error exporting Word document");
        return Json(new { success = false, message = "An error occurred while exporting the document." });
    }
}
[HttpPost]
public IActionResult ExportWordDocument()
{
    try
    {
        WordDocument doc = new WordDocument();
        doc.AddText("Test Word");
        string tempFileName = $"TempDoc_{Guid.NewGuid()}.docx";
        string tempFilePath = Path.Combine(_environment.WebRootPath, "TempFiles", tempFileName);
        Directory.CreateDirectory(Path.GetDirectoryName(tempFilePath));
        doc.SaveAs(tempFilePath);
        return Json(new { success = true, tempFilePath = $"/TempFiles/{tempFileName}" });
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error exporting Word document");
        return Json(new { success = false, message = "An error occurred while exporting the document." });
    }
}
<HttpPost>
Public Function ExportWordDocument() As IActionResult
	Try
		Dim doc As New WordDocument()
		doc.AddText("Test Word")
		Dim tempFileName As String = $"TempDoc_{Guid.NewGuid()}.docx"
		Dim tempFilePath As String = Path.Combine(_environment.WebRootPath, "TempFiles", tempFileName)
		Directory.CreateDirectory(Path.GetDirectoryName(tempFilePath))
		doc.SaveAs(tempFilePath)
		Return Json(New With {
			Key .success = True,
			Key .tempFilePath = $"/TempFiles/{tempFileName}"
		})
	Catch ex As Exception
		_logger.LogError(ex, "Error exporting Word document")
		Return Json(New With {
			Key .success = False,
			Key .message = "An error occurred while exporting the document."
		})
	End Try
End Function
VB   C#

Diese Methode erstellt ein neues Word-Dokument mit der IronWord-Bibliothek, fügt einen Testtext hinzu und speichert es in einer temporären Datei mit einem eindeutigen Namen. Es gibt ein JSON-Objekt zurück, das den Erfolgsstatus und den Pfad zur temporären Datei enthält. Wenn ein Fehler auftritt, wird die Ausnahme protokolliert und eine Fehlermeldung zurückgegeben.

Als Nächstes fügen wir die Methode hinzu, um den Dateidownload zu verarbeiten:

[HttpGet]
public IActionResult DownloadFile(string tempFilePath, string userFileName)
{
    try
    {
        string fullPath = Path.Combine(_environment.WebRootPath, tempFilePath.TrimStart('/'));
        if (!System.IO.File.Exists(fullPath))
        {
            return NotFound();
        }
        byte[] fileBytes = System.IO.File.ReadAllBytes(fullPath);
        System.IO.File.Delete(fullPath);
        string fileName = !string.IsNullOrEmpty(userFileName) ? userFileName : "ExportedDocument.docx";
        return File(fileBytes, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", fileName);
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error downloading file");
        return BadRequest("An error occurred while downloading the file.");
    }
}
[HttpGet]
public IActionResult DownloadFile(string tempFilePath, string userFileName)
{
    try
    {
        string fullPath = Path.Combine(_environment.WebRootPath, tempFilePath.TrimStart('/'));
        if (!System.IO.File.Exists(fullPath))
        {
            return NotFound();
        }
        byte[] fileBytes = System.IO.File.ReadAllBytes(fullPath);
        System.IO.File.Delete(fullPath);
        string fileName = !string.IsNullOrEmpty(userFileName) ? userFileName : "ExportedDocument.docx";
        return File(fileBytes, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", fileName);
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Error downloading file");
        return BadRequest("An error occurred while downloading the file.");
    }
}
<HttpGet>
Public Function DownloadFile(ByVal tempFilePath As String, ByVal userFileName As String) As IActionResult
	Try
		Dim fullPath As String = Path.Combine(_environment.WebRootPath, tempFilePath.TrimStart("/"c))
		If Not System.IO.File.Exists(fullPath) Then
			Return NotFound()
		End If
		Dim fileBytes() As Byte = System.IO.File.ReadAllBytes(fullPath)
		System.IO.File.Delete(fullPath)
		Dim fileName As String = If(Not String.IsNullOrEmpty(userFileName), userFileName, "ExportedDocument.docx")
		Return File(fileBytes, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", fileName)
	Catch ex As Exception
		_logger.LogError(ex, "Error downloading file")
		Return BadRequest("An error occurred while downloading the file.")
	End Try
End Function
VB   C#

Diese Methode ruft die von ExportWordDocument erstellte temporäre Datei ab, liest deren Inhalt in ein Byte-Array ein und löscht anschließend die temporäre Datei. Sie verwendet den angegebenen Benutzernamen oder einen Standardnamen, falls keiner angegeben ist. Die Methode gibt dann den Dateiinhalte als herunterladbares Word-Dokument zurück. Wenn die Datei nicht gefunden wird oder ein Fehler auftritt, werden entsprechende HTTP-Antworten zurückgegeben.

4.4 Verbesserung des visuellen Designs der Anwendung

Um das allgemeine Erscheinungsbild unseres Word-Dokumentverarbeitungsprogramms zu verbessern, haben wir benutzerdefiniertes CSS direkt in der _Layout.cshtml-Datei hinzugefügt. Lassen Sie uns das Styling untersuchen, das wir implementiert haben:

<style>
    :root {
        --primary-color: #3498db;
        --text-color: #333;
        --bg-color: #f8f9fa;
        --nav-bg: #fff;
        --nav-text: #2c3e50;
        --nav-hover: #3498db;
    }
    body {
        font-family: 'Segoe UI', sans-serif;
        background-color: var(--bg-color);
        color: var(--text-color);
        line-height: 1.6;
    }
    .navbar { background-color: var(--nav-bg); }
    .navbar-brand {
        font-size: 1.5rem;
        font-weight: 700;
        color: var(--primary-color);
        margin-right: 2rem;
    }
    .navbar-nav { margin-left: auto; }
    .navbar-nav .nav-item { margin-left: 1rem; }
    .navbar-nav .nav-link {
        color: var(--nav-text);
        font-weight: 500;
        transition: all 0.3s ease;
        padding: 0.5rem 1rem;
        border-radius: 4px;
    }
    .navbar-nav .nav-link:hover, .navbar-nav .nav-link.active {
        color: var(--primary-color);
        background-color: rgba(52, 152, 219, 0.1);
    }
    .navbar-nav .nav-link i {
        margin-right: 0.5rem;
        font-size: 1.1em;
    }
    .centered-container {
        max-width: 800px;
        margin: 0 auto;
        padding: 2rem;
    }
    .footer {
        background-color: var(--nav-bg);
        border-top: 1px solid #ecf0f1;
        font-size: 0.9em;
        color: var(--nav-text);
    }
    .footer a {
        color: var(--primary-color);
        text-decoration: none;
        transition: color 0.3s ease;
    }
    .footer a:hover { color: var(--nav-hover); }
    @@media (max-width: 576px) {
        .navbar-nav {
            margin-left: 0;
            margin-top: 1rem;
        }
        .navbar-nav .nav-item {
            margin-left: 0;
            margin-bottom: 0.5rem;
        }
    }
</style>
<style>
    :root {
        --primary-color: #3498db;
        --text-color: #333;
        --bg-color: #f8f9fa;
        --nav-bg: #fff;
        --nav-text: #2c3e50;
        --nav-hover: #3498db;
    }
    body {
        font-family: 'Segoe UI', sans-serif;
        background-color: var(--bg-color);
        color: var(--text-color);
        line-height: 1.6;
    }
    .navbar { background-color: var(--nav-bg); }
    .navbar-brand {
        font-size: 1.5rem;
        font-weight: 700;
        color: var(--primary-color);
        margin-right: 2rem;
    }
    .navbar-nav { margin-left: auto; }
    .navbar-nav .nav-item { margin-left: 1rem; }
    .navbar-nav .nav-link {
        color: var(--nav-text);
        font-weight: 500;
        transition: all 0.3s ease;
        padding: 0.5rem 1rem;
        border-radius: 4px;
    }
    .navbar-nav .nav-link:hover, .navbar-nav .nav-link.active {
        color: var(--primary-color);
        background-color: rgba(52, 152, 219, 0.1);
    }
    .navbar-nav .nav-link i {
        margin-right: 0.5rem;
        font-size: 1.1em;
    }
    .centered-container {
        max-width: 800px;
        margin: 0 auto;
        padding: 2rem;
    }
    .footer {
        background-color: var(--nav-bg);
        border-top: 1px solid #ecf0f1;
        font-size: 0.9em;
        color: var(--nav-text);
    }
    .footer a {
        color: var(--primary-color);
        text-decoration: none;
        transition: color 0.3s ease;
    }
    .footer a:hover { color: var(--nav-hover); }
    @@media (max-width: 576px) {
        .navbar-nav {
            margin-left: 0;
            margin-top: 1rem;
        }
        .navbar-nav .nav-item {
            margin-left: 0;
            margin-bottom: 0.5rem;
        }
    }
</style>
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'(Of style) :root
'{
'		--primary-color: #3498db;
'		--text-color: #333;
'		--bg-color: #f8f9fa;
'		--nav-bg: #fff;
'		--nav-text: #2c3e50;
'		--nav-hover: #3498db;
'	}
	body
	If True Then
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'		font-family: 'Segoe UI', sans-serif; background-color: var(--bg-color); color: var(--text-color); line-height: 1.6; } .navbar { background-color: var(--nav-bg); } .navbar-brand { font-size: 1.5rem; font-weight: 700; color: var(--primary-color); margin-right: 2rem; } .navbar-nav { margin-left: auto; } .navbar-nav.nav-item { margin-left: 1rem; } .navbar-nav.nav-link { color: var(--nav-text); font-weight: 500; transition: all 0.3s ease; padding: 0.5rem 1rem; border-radius: 4px; } .navbar-nav.nav-link:hover, .navbar-nav.nav-link.active { color: var(--primary-color); background-color: rgba(52, 152, 219, 0.1); } .navbar-nav.nav-link i { margin-right: 0.5rem; font-size: 1.1em; } .centered-container { max-width: 800px; margin: 0 auto; padding: 2rem; } .footer { background-color: var(--nav-bg); border-top: 1px solid #ecf0f1; font-size: 0.9em; color: var(--nav-text); } .footer a { color: var(--primary-color); text-decoration: none; transition: color 0.3s ease; } .footer a:hover { color: var(--nav-hover); } @@media(max-width: 576px) { .navbar-nav { margin-left: 0; margin-top: 1rem; } .navbar-nav.nav-item { margin-left: 0; margin-bottom: 0.5rem; } } </style>
VB   C#

Dieser CSS-Block definiert das Farbschema und Layout unserer Anwendung. Wir verwenden CSS-Variablen(Benutzerdefinierte Eigenschaften)um eine konsistente Farbpalette in der gesamten App zu erstellen. Die Stile richten sich auf verschiedene Elemente, einschließlich des Körpers, der Navigationsleiste und der Fußzeile, um ein einheitliches Design zu gewährleisten. Wir haben die Navigationsleiste mit einem sauberen, modernen Erscheinungsbild eingerichtet, das Hover-Effekte und Symbolintegration bietet. W

Während sich unsere Anwendung derzeit auf Word-Dokumente konzentriert, können wir verwendenIronPDFum Unterstützung für PDF-Dokumente zu integrieren, um seine Funktionalität auf eine breitere Palette von Dateitypen zu erweitern. Das System könnte erweitert werden, um es Benutzern zu ermöglichen, ihre Dokumente zusätzlich zu den aktuellen Word-Formatoptionen als PDF-Datei zu exportieren.

5. Ausführen der Anwendung

Lassen Sie uns mit dem Ausführen unserer WordDocumentProcessor-Anwendung beginnen. Wie wir im Bild sehen können, wurde die Anwendung erfolgreich im Browser geladen. Die Benutzeroberfläche ist übersichtlich und benutzerfreundlich, mit einer Navigationsleiste oben, die die Optionen "Home" und "Export" anzeigt. Der Hauptinhaltbereich zeigt den Titel "Word Document Processor" und eine kurze Beschreibung: "Laden Sie Ihre Word-Dokumente problemlos hoch und verarbeiten Sie sie."

ASP .NET Core Importieren und Exportieren einer Word-Datei: Abbildung 3

Jetzt versuchen wir, ein Dokument zu importieren. Auf dem Bild sehen wir, dass wir eine Datei namens "Honey research synopsis.docx" ausgewählt haben. Der Dateiname wird im Upload-Bereich angezeigt und ersetzt den Button „Datei auswählen“. Wir sind jetzt bereit, dieses Dokument hochzuladen und zu verarbeiten.

ASP .NET Core Import & Export einer Word-Datei: Abbildung 4

Nach dem Klicken auf "Hochladen und Verarbeiten" verarbeitet die Anwendung das Dokument und zeigt dessen Inhalt an. Der Abschnitt "Dokumentinhalt" zeigt nun den Anfang des hochgeladenen Dokuments an. Wir sehen den Titel "Beekeeping Technologies and Quality of Honey Production in Urban Areas", gefolgt von einer Zusammenfassung. Dies zeigt, dass unsere Anwendung den Inhalt des Word-Dokuments erfolgreich gelesen und angezeigt hat.

ASP .NET Core Import & Export einer Word-Datei: Abbildung 5

Zum Schluss testen wir die Exportfunktionalität. Auf dem Bild sehen wir eine Eingabeaufforderung, die erscheint, wenn wir auf die Schaltfläche "Exportieren" in der Navigationsleiste klicken. Die Aufforderung bittet uns, "einen Namen für das Dokument einzugeben."(ohne Erweiterung)". Der Standardname "ExportedDocument" ist vorausgefüllt, aber wir können ihn bei Bedarf ändern. Diese Eingabeaufforderung ermöglicht es uns, den Namen unseres exportierten Dokuments vor dem Herunterladen anzupassen.

ASP .NET Core Importieren & Exportieren einer Word-Datei: Abbildung 6

Nach dem Klicken auf "OK" erzeugt die Anwendung ein neues Word-Dokument mit dem angegebenen Namen und startet den Downloadvorgang. Dieses exportierte Dokument enthält die Inhalte, die wir verarbeitet oder Änderungen, die wir innerhalb der Anwendung vorgenommen haben.

ASP .NET Core Import & Export einer Word-Datei: Abbildung 7

Im Laufe dieses Prozesses können wir sehen, dass die Anwendung wie beabsichtigt funktioniert. Wir können diese Anwendung verwenden, um Word-Dokumente zu importieren, Dokumente zu erstellen und sie problemlos zu exportieren. Die Benutzeroberfläche ist intuitiv und reaktionsschnell.

Schlussfolgerung

Abschließend zeigt unsere WordDocumentProcessor-Anwendung erfolgreich die Leistungsfähigkeit und Flexibilität der Integration der Verarbeitung von Word-Dokumenten in eine ASP.NET Core-Webanwendung. Indem wir die IronWord-Bibliothek nutzen, haben wir eine leistungsstarke Lösung zum einfachen Importieren, Anzeigen und Exportieren von Word-Dokumenten entwickelt. Diese Anwendung dient als solide Grundlage für komplexere Dokumentenmanagementsysteme oder Berichtsgeneratoren. Für Entwickler, die an der Erkundung der Fähigkeiten von IronWord interessiert sind, bietet die Bibliothek einkostenloser Test. Nach der Testversion beginnt die Lizenzierung bei $749, was es zu einer kostengünstigen Lösung für Unternehmen macht, die erweiterte Funktionen zur Verarbeitung von Word-Dokumenten in ihren Webanwendungen benötigen.

NÄCHSTES >
VS 2022 Programmatisch Neue Word-Dokumente Erstellen (Tutorial)

Sind Sie bereit, loszulegen? Version: 2024.12 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 8,594 Lizenzen anzeigen >