gpt4 book ai didi

C# Web Api - 在不保存文件的情况下从 excel 文件上传和读取数据

转载 作者:行者123 更新时间:2023-11-30 17:45:37 25 4
gpt4 key购买 nike

我有一个 WebApi 将接收用户上传的 excel 文件作为 multipart/form-data。我需要读取该文件的内容以更新数据库。我正在考虑使用 EPPlus,但我无法访问该文件。这是代码

public class MyController : APIController
{
[Route("import")]
[HttpPost]
public async Task<HttpResponseMessage> importFile()
{
if (!Request.Content.IsMimeMultipartContent())
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "ERROR");

Stream stream = await Request.Content.ReadAsStreamAsync();

var excel = new ExcelPackage(stream);
var workbook = excel.Workbook;

var sheet = excel.Workbook.Worksheets.First();

...

}

错误在 var sheet = excel.Workbook.Worksheets.First() 上,因为工作簿没有任何工作表(但物理文件有 2 个)。

我做错了什么?是流吗?

我正在尝试为每种类型的 Excel 文件(.xls 或 .xlsx)创建单独的库,但我无法使用 .xls 文件进行此操作。我正在使用 ExcelDataReader,代码现在是这样的:

public async Task<HttpResponseMessage> importFile()
{
if (!Request.Content.IsMimeMultipartContent())
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "NOT MULTIPART");

Stream stream = await Request.Content.ReadAsStreamAsync();

//open xlsx file
var excel = new ExcelPackage(stream);
var workbook = excel.Workbook;
try
{
var sheet = excel.Workbook.Worksheets.First();

//working fine with EPPlus for .xlsx files
return Request.CreateResponse(HttpStatusCode.OK, errors);

}catch(Exception)//open xls file
{
//if its a .xls file it will throw an Exception
}

//using ExcelDataReader to open .xls file
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
DataSet result = excelReader.AsDataSet();

// the DataSet is null, stream is setted as ReadOnlyStream and stream.length is throwing an ObjectDisposedException
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "erro");
}

最佳答案

您可以使用 Microsoft.Interop.Excel 来读取 xls 文件,但即使是 Microsoft 也不赞成这种技术,因为它很慢,而且它不是为在服务器上运行而设计的。此外,他们的支持刚刚结束。

作为替代,您可以使用 EasyXLS图书馆。您可以使用它来读取 XLS 文件。

查看此代码示例,它解释了如何将 Excel 文件导入 SQL 表: http://www.easyxls.com/manual/FAQ/import-excel-to-sql.html

关于C# Web Api - 在不保存文件的情况下从 excel 文件上传和读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com