如何在 Android 上使用 .NET MAUI 读取和写入 Word 文档

This article was translated from English: Does it need improvement?
Translated
View the article in English

.NET MAUI(多平台应用程序 UI)允许开发人员使用单个 C# 代码库为 Android、iOS、macOS 和 Windows 构建原生应用程序。 这种方法简化了开发,并在所有平台上实现了原生性能。

虽然 IronWord 没有专门的 Android 软件包,但它可以通过 .NET MAUI 在 Android 上流畅运行。 这意味着您可以轻松地在 Android 设备上构建用于读取和写入 Word 文档的应用程序。

步骤 1:创建您的 .NET MAUI 应用程序项目

首先打开 Visual Studio 并创建一个新的 .NET MAUI 应用程序项目。 此类项目支持从同一代码库构建适用于多个平台的应用程序。

为了便于管理,请选择一个清晰明了的项目名称,例如 IronWordMauiAndroid。 这种设置为构建原生 Android 应用奠定了基础,同时最大限度地减少了平台特定的代码。

步骤 2:添加 IronWord NuGet 包

IronWord 可以通过其 NuGet 包无缝集成到您的 .NET 项目中。 要通过 NuGet 添加 IronWord,请右键单击您的项目并选择"管理 NuGet 程序包"。 搜索"IronWord"并安装最新稳定版本。

或者,您也可以通过运行以下命令,使用 NuGet 包管理器控制台轻松添加它:

Install-Package IronWord

步骤 3:在 MainPage.xaml 中设计用户界面

为了让用户在 Android 上创建和保存 Word 文档,您将使用 XAML 设计一个简洁明了的用户界面。 此界面包括:

  • 一个多行文本编辑器,用户可以在其中输入或编辑内容。
  • 添加一个"另存为 Word 文档"按钮,点击后可将当前文本保存为 .docx 文件。 步骤五:在安卓设备上运行应用

以下是定义此布局的 XAML 标记:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="IronWordAndroid.MainPage">

    <VerticalStackLayout Padding="20" Spacing="15">
        <Editor x:Name="WordEditor"
                Placeholder="Enter your text..."
                AutoSize="TextChanges"
                HeightRequest="300"/>
        <Button Text="Save as Word Document" Clicked="OnSaveWordClicked"/>
        <Label x:Name="StatusLabel" FontSize="12" TextColor="Gray"/>
    </VerticalStackLayout>
</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="IronWordAndroid.MainPage">

    <VerticalStackLayout Padding="20" Spacing="15">
        <Editor x:Name="WordEditor"
                Placeholder="Enter your text..."
                AutoSize="TextChanges"
                HeightRequest="300"/>
        <Button Text="Save as Word Document" Clicked="OnSaveWordClicked"/>
        <Label x:Name="StatusLabel" FontSize="12" TextColor="Gray"/>
    </VerticalStackLayout>
</ContentPage>
XML

步骤 4:在 MainPage.xaml.cs 中实现文档处理

用户界面设置完成后,现在可以添加逻辑来处理文档保存。 在 MainPage.xaml.cs 中,在构造函数中设置您的 IronWord 许可证密钥,然后实现 OnSaveWordClicked 方法。

点击按钮后,应用程序会创建一个新的 Word 文档,将编辑器中的文本作为段落添加到文档中,然后保存文件。在 Android 系统上,文件会保存到"下载"文件夹中; 在其他平台上,它使用应用程序的缓存目录。

try-catch 块可确保捕获所有错误并在状态标签中显示。

以下是完整的可运行代码:

using IronWord;
using IronWord.Models;
using Microsoft.Maui.Storage;
using System.Text;

namespace IronWordAndroid;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();

        // Set your IronWord license key
        License.LicenseKey = "YOUR-LICENSE-KEY";
    }

    private async void OnSaveWordClicked(object sender, EventArgs e)
    {
        try
        {
            // Create new Word document
            var document = new WordDocument();
            Paragraph paragraph = new Paragraph(new TextContent(WordEditor.Text));
            // Add basic text content
            document.AddParagraph(paragraph);

            // Generate a filename
            string fileName = $"MyWordDoc_{DateTime.Now:yyyyMMddHHmmss}.docx";

#if ANDROID
            string filePath = Path.Combine("/storage/emulated/0/Download", fileName);
#else
            string filePath = Path.Combine(FileSystem.CacheDirectory, fileName);
#endif

            // Save to path
            document.SaveAs(filePath);

            StatusLabel.Text = $"Saved to: {filePath}";
            await DisplayAlert("Success", $"File saved: {filePath}", "OK");
        }
        catch (Exception ex)
        {
            StatusLabel.Text = $"Error: {ex.Message}";
        }
    }
}
using IronWord;
using IronWord.Models;
using Microsoft.Maui.Storage;
using System.Text;

namespace IronWordAndroid;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();

        // Set your IronWord license key
        License.LicenseKey = "YOUR-LICENSE-KEY";
    }

    private async void OnSaveWordClicked(object sender, EventArgs e)
    {
        try
        {
            // Create new Word document
            var document = new WordDocument();
            Paragraph paragraph = new Paragraph(new TextContent(WordEditor.Text));
            // Add basic text content
            document.AddParagraph(paragraph);

            // Generate a filename
            string fileName = $"MyWordDoc_{DateTime.Now:yyyyMMddHHmmss}.docx";

#if ANDROID
            string filePath = Path.Combine("/storage/emulated/0/Download", fileName);
#else
            string filePath = Path.Combine(FileSystem.CacheDirectory, fileName);
#endif

            // Save to path
            document.SaveAs(filePath);

            StatusLabel.Text = $"Saved to: {filePath}";
            await DisplayAlert("Success", $"File saved: {filePath}", "OK");
        }
        catch (Exception ex)
        {
            StatusLabel.Text = $"Error: {ex.Message}";
        }
    }
}
Imports IronWord
Imports IronWord.Models
Imports Microsoft.Maui.Storage
Imports System.Text

Namespace IronWordAndroid

	Partial Public Class MainPage
		Inherits ContentPage

		Public Sub New()
			InitializeComponent()

			' Set your IronWord license key
			License.LicenseKey = "YOUR-LICENSE-KEY"
		End Sub

		Private Async Sub OnSaveWordClicked(ByVal sender As Object, ByVal e As EventArgs)
			Try
				' Create new Word document
				Dim document = New WordDocument()
				Dim paragraph As New Paragraph(New TextContent(WordEditor.Text))
				' Add basic text content
				document.AddParagraph(paragraph)

				' Generate a filename
				Dim fileName As String = $"MyWordDoc_{DateTime.Now:yyyyMMddHHmmss}.docx"

#If ANDROID Then
				Dim filePath As String = Path.Combine("/storage/emulated/0/Download", fileName)
#Else
				Dim filePath As String = Path.Combine(FileSystem.CacheDirectory, fileName)
#End If

				' Save to path
				document.SaveAs(filePath)

				StatusLabel.Text = $"Saved to: {filePath}"
				Await DisplayAlert("Success", $"File saved: {filePath}", "OK")
			Catch ex As Exception
				StatusLabel.Text = $"Error: {ex.Message}"
			End Try
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

步骤五:在安卓设备上运行你的应用

直接从 Visual Studio 轻松将应用程序部署到 Android 模拟器或物理设备。 这样一来,您就可以快速测试一些基本功能,例如打开 Word 文档、编辑其内容以及保存任何更改。

集成原生 Android 文件选择器为用户提供流畅熟悉的体验,提高了整体可用性。

由于 IronWord 完全在 .NET 环境中运行,因此无需额外的 SDK 或特定于平台的依赖项,从而使您的应用程序更易于开发、维护和分发。

常见问题解答

什么是 IronWord?

IronWord 是 Iron Software 开发的一个库,允许开发人员在其应用程序中处理 Word 文档,包括使用 .NET MAUI 的 Android 应用。

如何将 IronWord 集成到 Android 应用程序中?

您可以通过遵循 Iron Software 网站上的设置说明,将库添加到您的 .NET MAUI 项目中来将 IronWord 集成到您的 Android 应用程序。

使用 IronWord 进行 Android 开发有什么好处?

IronWord 提供了一种简单高效的方法来在 Android 应用程序中读取、写入和操作 Word 文档,利用 .NET MAUI 的强大功能实现无缝的跨平台开发。

IronWord 能处理复杂的 Word 文档吗?

是的,IronWord 旨在处理复杂的 Word 文档,包括具有高级格式和嵌入式元素的文档,使其成为开发人员的理想选择。

IronWord 与 .NET MAUI 兼容吗?

是的,IronWord 完全兼容 .NET MAUI,允许开发人员构建包含 Word 文档处理功能的跨平台应用程序。

IronWord 能处理哪些文件格式?

IronWord 主要处理 Word 文档格式,例如 DOCX 和 DOC,提供全面的读取和写入这些文件的功能。

IronWord 是否支持 Android 上的文档转换?

IronWord 支持文档转换功能,允许开发人员根据需要在 Android 应用程序中将 Word 文档转换为其他格式。

有没有 IronWord 的试用版可用?

是的,Iron Software 提供 IronWord 的免费试用版,允许开发人员在购买前探索其功能。

IronWord 用户可以获得什么样的支持?

Iron Software 为 IronWord 用户提供全面的支持,包括文档、教程和专门的支持团队以协助解决任何问题。

IronWord 可以用于在 Android 上创建 Word 模板吗?

是的,IronWord 可用于创建和处理 Word 模板,非常适合需要在 Android 设备上生成模板化文档的应用程序。

Kye Stuart
技术作家

Kye Stuart 在 Iron Software 中将编码热情与写作技能结合在一起。他在 Yoobee 学院接受软件部署教育,现在将复杂的技术概念转化为清晰的教育内容。Kye 重视终身学习,接受新的技术挑战。

工作之余,他们喜欢 PC 游戏、Twitch 上的直播,以及户外活动如园艺和带狗 Jaiya 散步。Kye 的直截了当的方法使他们成为 Iron Software 使命的关键,即为全球开发者解密技术。

准备开始了吗?
Nuget 下载 27,129 | Version: 2025.11 刚刚发布