Create Word file in Xamarin

GemBox.Document is a standalone .NET component with cross-platform support. You can use it on non-Windows platforms like Xamarin and Mono, enabling you to run it on Android and iOS mobile devices.

With GemBox.Document you can process your documents (read, write, convert, and edit Word files) from the native mobile apps.

The following example shows how you can create a Word file in Xamarin.Forms mobile application.

Word file generator on a native Android mobile app with Xamarin.Forms
Screenshot of Xamarin Android app that creates a Word file
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="MainPage">

    <StackLayout Padding="50" 
                 Spacing="20">

        <Label Text="GemBox.Document Example"
               HorizontalOptions="Center"
               FontSize="Large"
               Margin="0,0,0,30" />

        <Editor x:Name="text"
                VerticalOptions="FillAndExpand"
                Text="Hi! This document was generated with GemBox.Document library." />

        <ActivityIndicator x:Name="activity" />

        <Button x:Name="button"
                Text="Create document"
                Clicked="Button_Clicked"/>

    </StackLayout>
</ContentPage>
using System;
using System.ComponentModel;
using System.IO;
using System.Threading.Tasks;
using Xamarin.Essentials;
using Xamarin.Forms;
using GemBox.Document;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");
        InitializeComponent();
    }

    private string CreateDocument()
    {
        var document = new DocumentModel();

        document.Sections.Add(new Section(document,
            new Paragraph(document, text.Text)));

        var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Example.docx");

        document.Save(filePath);

        return filePath;
    }

    private async void Button_Clicked(object sender, EventArgs e)
    {
        button.IsEnabled = false;
        activity.IsRunning = true;

        try
        {
            var filePath = await Task.Run(() => CreateDocument());
            await Launcher.OpenAsync(new OpenFileRequest(Path.GetFileName(filePath), new ReadOnlyFile(filePath)));
        }
        catch (Exception ex)
        {
            await DisplayAlert("Error", ex.Message, "Close");
        }

        activity.IsRunning = false;
        button.IsEnabled = true;
    }
}
Imports System
Imports System.ComponentModel
Imports System.IO
Imports System.Threading.Tasks
Imports Xamarin.Essentials
Imports Xamarin.Forms
Imports GemBox.Document

Partial Public Class MainPage
    Inherits ContentPage

    Public Sub New()
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")
        InitializeComponent()
    End Sub

    Private Function CreateDocument() As String
        Dim document As New DocumentModel()

        document.Sections.Add(New Section(document,
            New Paragraph(document, Text.Text)))

        Dim filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Example.docx")

        document.Save(filePath)

        Return filePath
    End Function

    Private Async Sub Button_Clicked(sender As Object, e As EventArgs)
        button.IsEnabled = False
        activity.IsRunning = True

        Try
            Dim filePath = Await Task.Run(Function() CreateDocument())
            Await Launcher.OpenAsync(New OpenFileRequest(Path.GetFileName(filePath), New ReadOnlyFile(filePath)))
        Catch ex As Exception
            Await DisplayAlert("Error", ex.Message, "Close")
        End Try

        activity.IsRunning = False
        button.IsEnabled = True
    End Sub
End Class

Limitations on Android or iOS

You can use the full functionality of GemBox.Document on the Xamarin applications, but with the following exceptions:

These features currently have WPF dependencies which means they require a .NET Windows Desktop Runtime. However, we do have plans for providing cross-platform support for them in future releases.

Want more?

Next example GitHub

Check the next example or select an example from the menu. You can also download our examples from the GitHub.


Like it?

Download Buy

If you want to try the GemBox.Document yourself, you can download the free version. It delivers the same performance and set of features as the professional version, but with some operations limited. To remove the limitation, you need to purchase a license.