【发布时间】:2017-01-31 01:55:55
【问题描述】:
我有三个 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 电子表格,但仅将第一个数据集作为数据表输出。
感谢任何输入。
【问题讨论】:
标签: c# asp.net datatable dataset