首页>软件资讯>常见问题

常见问题

用 Aspose.Words 在 ASP.NET Core 中轻松实现 Word 文件下载

发布时间:2024-07-29 12:02:03人气:225


收到一个需求,需要把数据库中的文本生成Word下载,刚好项目引用了Aspose处理Excel,那么就用Aspose来处理Words。本文将介绍如何使用 Aspose.Words 库在 ASP.NET Core API 中实现 Word 文档的生成和下载功能,并实现自定义样式。


前提条件

在开始之前,请确保你已经安装了以下工具和库:


[.NET 8 SDK]:https://dotnet.microsoft.com/download/dotnet/8.0

[Aspose.Words for .NET]:https://www.nuget.org/packages/Aspose.Words/

可以通过 NuGet 包管理器安装 Aspose.Words:


dotnet add package Aspose.Words

创建 ASP.NET Core API 项目

首先,创建一个新的 ASP.NET Core Web API 项目:


dotnet new webapi -n WordDownloadApi

cd WordDownloadApi

实现 Word 文档生成和下载

接下来,我们将在控制器中实现生成和下载 Word 文档的功能。


创建一个新的控制器 WordFileController:

using Aspose.Words;

using Microsoft.AspNetCore.Mvc;

using System.IO;

using System.Threading.Tasks;


namespace WordDownloadApi.Controllers

{

    [Route("api/[controller]")]

    [ApiController]

    public class WordFileController : ControllerBase

    {

        [HttpGet("download")]

        public async Task<IActionResult> DownloadWordFile()

        {

            // 创建一个新的文档

            Document doc = new Document();

            DocumentBuilder builder = new DocumentBuilder(doc);


            // 添加标题

            builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Title;

            builder.Writeln("这是文章的标题");


            // 添加带缩进的段落

            builder.ParagraphFormat.ClearFormatting();

            builder.ParagraphFormat.LeftIndent = 36;  // 设置左缩进

            builder.Writeln("这是第一个带有左缩进的段落内容。这里可以添加更多详细信息。");


            builder.ParagraphFormat.ClearFormatting();

            builder.ParagraphFormat.FirstLineIndent = 36;  // 设置首行缩进

            builder.Writeln("这是第二个带有首行缩进的段落内容。可以根据需要添加更多段落。");


            // 添加其他格式的段落

            builder.ParagraphFormat.ClearFormatting();

            builder.Font.Bold = true;

            builder.Writeln("这是粗体文本");

            builder.Font.Bold = false;


            builder.Font.Italic = true;

            builder.Writeln("这是斜体文本");

            builder.Font.Italic = false;


            builder.Font.Underline = Underline.Single;

            builder.Writeln("这是带有下划线的文本");

            builder.Font.Underline = Underline.None;


            // 将文档保存到内存流

            using (MemoryStream memStream = new MemoryStream())

            {

                doc.Save(memStream, Aspose.Words.SaveFormat.Docx);

                byte[] byteArray = memStream.ToArray();


                // 设置文件名和 MIME 类型

                string fileName = "styled_article_with_indent.docx";

                string mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";


                        // 使用显式命名空间调用 File 方法

                return new FileContentResult(byteArray, mimeType)

                {

                    FileDownloadName = fileName

                };

            }

        }

    }

}

解释代码

创建新的文档和文档生成器:


Document doc = new Document();

DocumentBuilder builder = new DocumentBuilder(doc);

这段代码创建了一个新的 Word 文档对象和一个文档生成器,用于向文档中添加内容。


添加标题:


builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Title;

builder.Writeln("这是文章的标题");

使用 ParagraphFormat.StyleIdentifier 设置标题样式,并添加一个标题。


添加带缩进的段落:


builder.ParagraphFormat.ClearFormatting();

builder.ParagraphFormat.LeftIndent = 36;  // 设置左缩进

builder.Writeln("这是第一个带有左缩进的段落内容。这里可以添加更多详细信息。");


builder.ParagraphFormat.ClearFormatting();

builder.ParagraphFormat.FirstLineIndent = 36;  // 设置首行缩进

builder.Writeln("这是第二个带有首行缩进的段落内容。可以根据需要添加更多段落。");

通过 ParagraphFormat.LeftIndent 和 ParagraphFormat.FirstLineIndent 设置段落的左缩进和首行缩进。


添加其他格式的段落:


builder.ParagraphFormat.ClearFormatting();

builder.Font.Bold = true;

builder.Writeln("这是粗体文本");

builder.Font.Bold = false;


builder.Font.Italic = true;

builder.Writeln("这是斜体文本");

builder.Font.Italic = false;


builder.Font.Underline = Underline.Single;

builder.Writeln("这是带有下划线的文本");

builder.Font.Underline = Underline.None;

添加不同格式的文本,如粗体、斜体和下划线。


将文档保存到内存流并返回:


using (MemoryStream memStream = new MemoryStream())

{

    doc.Save(memStream, Aspose.Words.SaveFormat.Docx);

    byte[] byteArray = memStream.ToArray();


    // 设置文件名和 MIME 类型

    string fileName = "styled_article_with_indent.docx";

    string mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";


    // 使用显式命名空间调用 File 方法

    return new FileContentResult(byteArray, mimeType)

    {

          FileDownloadName = fileName

    };

}

将生成的文档保存到内存流中,并异步写入响应流中,以便客户端可以下载该文件。


运行项目

保存所有文件后,在项目目录中运行以下命令启动项目:


dotnet run

访问 http://localhost:5000/api/wordfile/download,即可下载生成的 Word 文档。


效果如下:

效果.png

前端就可以用这个接口调用啦!


总结

本文介绍了如何使用 Aspose.Words 库在 ASP.NET Core API 中实现 Word 文档的生成和下载功能。通过使用 Aspose.Words 强大的文档生成能力,我们可以轻松地创建带有各种格式和样式的 Word 文档,并提供给客户端下载。希望这篇文章能对你有所帮助!



上一条:【文档管理】W3K 使用 Aspose.Total 将 CAD 图纸和 Office 文档转换为 PDF

下一条:aspose-cells,一个Python中不可或缺的库