すべての主キーが同じ3つのExcelファイルがあります。私はこれらのExcelファイルを自分のアプリケーションにアップロードしており、それらを1つのデータセット/データテーブルにすべてマージしたいと思っています。私はいくつかのことを試しましたが失敗しました。ここで複数の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);
}
は、私は、データセットの主キーを指定する必要がありますか?現在、3つすべてのExcelスプレッドシートをループしていますが、最初のデータセットのみをデータテーブルとして出力しています。
ご了承ください。
マージ。どうもありがとうございます。私は列のいくつかのデータ型を混乱させなければならなかったが、いくつかの変換の後、それは完璧に動作している! – dev53