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

常见问题

.NET 高效下载 Word 文件(Aspose.Words)

发布时间:2024-07-08 11:39:06人气:121

前言


收到一个需求,需要把数据库中的文本生成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 文档的功能。


1、创建一个新的控制器 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  

                };  

            }  

        }  

    }  

}  

解释代码

1、创建新的文档和文档生成器


Document doc = new Document();  

DocumentBuilder builder = new DocumentBuilder(doc);  

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


2、添加标题


builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Title;  

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

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


3、添加带缩进的段落


builder.ParagraphFormat.ClearFormatting();  

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

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

  

builder.ParagraphFormat.ClearFormatting();  


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


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

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


4、添加其他格式的段落


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;  

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


5、将文档保存到内存流并返回


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 文档,并提供给客户端下载。希望这篇文章能对你有所帮助!



上一条:Docker系列之Docker Compose

下一条:Understand软件介绍