c# - 无法通过 C# 保存 excel 文件
问题描述
我使用 C# 制作了一个 API,并使用 is 作为我的 Angular 项目的后端。我的任务是通过一个以角度制作的按钮将数据保存为我的页面中的 excel 文件。逻辑在后端。我已经尝试了一切来实现这一点,但似乎没有任何效果。我现在正在使用 EPPlus,使用 SaveAs 方法,将 excel 包转换为字节数组。
所以这是我在 C# 中的功能
public IHttpActionResult CreateExcelDocument()
{
//Creates a blank workbook. Using statement disposes the package.
using (var p = new ExcelPackage())
{
var result = new MemoryStream();
List<Hero> heroes = new List<Hero>();
var documents = collection.Find(new BsonDocument()).ToList();
foreach (BsonDocument docum in documents)
{
heroes.Add(BsonSerializer.Deserialize<Hero>(docum));
}
//Adding worksheet
var ws = p.Workbook.Worksheets.Add("Heroes");
//To set values in the spreadsheet use the Cells indexer.
ws.Cells["A1"].Value = "ID";
ws.Cells["B1"].Value = "Name";
for(var row = 1; row <= heroes.Count(); row++)
{
ws.Cells[row, 1].LoadFromCollection(heroes[row].Id);
ws.Cells[row, 2].LoadFromCollection(heroes[row].Name);
}
var stream = new MemoryStream(p.GetAsByteArray());
//string filePath = @"c:\workbooks\myworkbook.xlsx";
//FileInfo template = new FileInfo(filePath);
//MemoryStream outputStream = new MemoryStream();
p.SaveAs(stream);
return Ok(stream);
}
}
这是如何获得它的角度
saveDocument(): Observable<any> {
return this.http.get<any>(this.heroesUrl)
.pipe(
tap(p => this.log('saved excel document' + p)),
catchError(this.handleError<any>('saveDocument', []))
);
}
我制作了一个消息组件来显示我的 API 请求的状态,因此使用 saveDocument 我得到了这个: HeroService: saved excel document[object Object],[object Object],[object Object],[object Object],[object对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象对象]
我正在使用 MongoDB、Angular 8 和 ASP.NET Web API 2 (C#)
编辑:这是角度的按钮
<button (click)="saveDocument()"> Save heroes </button>
解决方案
如果您已经有了字节数组,为什么不简单地使用呢?SaveAs 命令仅适用于给定的 Workbook 对象,您可以在此处查看 ( https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.tools.excel.workbook.saveas?view=vsto -2017 )
File.WriteAllBytes(filename, stream);
编辑:从这里获取并适应您的问题的答案:另存为使用 EPPlus?
byte[] data = p.GetAsByteArray();
string path = @"C:\test1.xlsx";
File.WriteAllBytes(path, data);
推荐阅读
- javascript - 随机消息发送未按预期工作 discord.js
- javascript - 使用 React Redux 的私有路由
- php - 在 PHP 中访问 POST 提交函数之外的变量
- javascript - d3.v4:如何使用 linkRadial 而不是 linkVertical/Horizontal
- flutter - How to add variables in a class programmatically in dart?
- android - 如何使用 Retrofit/Moshi 解析嵌套的 JSON 对象
- sql - 是否可以锁定 SQL Server 中列的值?
- java-8 - 重构 Java 8 流代码 - 代码重复
- javascript - 未处理的承诺拒绝,即使我很确定我已经处理了所有这些
- sql - SQL/MS Access:在 SQL 表中添加一个自动更新的字段,其中包含另一个表中的值的总和