前言
收到一个需求,需要把数据库中的文本生成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 文档。
效果如下:
前端就可以用这个接口调用啦!
总结
本文介绍了如何使用 Aspose.Words 库在 ASP.NET Core API 中实现 Word 文档的生成和下载功能。
通过使用 Aspose.Words 强大的文档生成能力,我们可以轻松地创建带有各种格式和样式的 Word 文档,并提供给客户端下载。希望这篇文章能对你有所帮助!
上一条:Docker系列之Docker Compose
下一条:Understand软件介绍