【发布时间】:2019-04-15 11:53:34
【问题描述】:
在此处使用 .net core 和 c#。
我有一个用户界面,用户可以从中上传 Excel 或 CSV 文件。一旦他们上传到我的 web api,它会处理从这些文件中读取数据并返回 json。
我的Api代码为:
[HttpPost("upload")]
public async Task<IActionResult> FileUpload(IFormFile file)
{
JArray data = new JArray();
using (ExcelPackage package = new ExcelPackage(file.OpenReadStream()))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
//Process, read from excel here and populate jarray
}
return Ok(data );
}
在上面的代码中,我使用 EPPlus 来读取 excel 文件。对于 excel 文件,它可以正常工作,但它无法读取 csv 文件,这是 EPPlus 的限制。
我搜索并找到了另一个库 CSVHelper:https://joshclose.github.io/CsvHelper/ 这个问题是反之亦然,可以从 CSV 读取,但不能从 Excel 读取。
是否有任何可用的库支持从两者中读取。
或者是否可以仅使用 EPPlus,但将上传的 CSV 动态转换为 excel 然后读取。 (请注意我没有将 excel 文件存储在任何地方,所以不能使用 save as 将其另存为 excel)
请问有什么意见吗?
--更新-添加了从excel读取数据的代码---
int rowCount = worksheet.Dimension.End.Row;
int colCount = worksheet.Dimension.End.Column;
for (int row = 1; row <= rowCount; row++)
{
for (int col = 1; col <= colCount; col++)
{
var rowValue = worksheet.Cells[row, col].Value;
}
}
//With the code suggested in the answer rowcount is always 1
【问题讨论】:
-
如果我是你,我会使用最适合该格式的库,而不是试图找到一种万能的工具。如果您的代码是 Excel 文件,请使用 EPPlus,如果是 CSV 文件,请使用 CsvHelper。
-
@mason 谢谢,我只是想知道是否有这样的库可用,这样我就不必重复步骤了。是的,如果没有可用的,那么我可以按照您的建议使用 2 个库。
标签: c# excel csv asp.net-core epplus