我有三个excel文件,都具有相同的主键。我将这些excel文件上传到我的应用程序中,并希望将它们全部合并到一个数据集/数据表中(无论哪个更容易)。我已经尝试了几件事但未成功。从多个Excel文件合并/合并数据集
这里是我目前正在...
[HttpPost]
public async Task<ActionResult> Index(ICollection<IFormFile> files)
{
var uploads = Path.Combine(_environment.WebRootPath, "uploads");
DataSet ds = new DataSet();
IExcelDataReader reader = null;
DataTable dt = new DataTable();
foreach (var file in files)
{
Dataset ds2 = null;
if (file == null || file.Length == 0)
{
ViewBag.Error = "Please Select An Excel File<br>";
return View("Index");
}
else
{
using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
await file.CopyToAsync(fileStream);
if (file.FileName.EndsWith("xls"))
{
reader = ExcelReaderFactory.CreateBinaryReader(fileStream);
}
else if (file.FileName.EndsWith("xlsx"))
{
reader = ExcelReaderFactory.CreateOpenXmlReader(fileStream);
}
else
{
ViewBag.Error = "File type is incorrect<br>";
return View("Index");
}
reader.IsFirstRowAsColumnNames = true;
//set the second dataset as the value of the excel data
ds2 = reader.AsDataSet();
//merge the second dataset with the first...
ds.Merge(ds2);
}
}
}
dt = ds.Tables[0];
return View("Index", dt);
}
我需要指定数据集的主键?目前,它正在遍历我的所有三个Excel电子表格,但仅输出第一个数据集作为数据表。
任何输入表示赞赏。
这是真棒。非常感谢。我不得不扼杀列的一些数据类型,但经过一些转换后,它工作得很完美! – dev53