我正在尝试通过上传Excel文件来获取数据。我在应用程序中使用Excel Reader,该应用程序获取流并将数据复制到Data表中。我需要知道为什么在Excel这样没有定义标题的情况下为什么要在数据集的标题中得到column0 column1
。或者如何用column 0
column 1
column 2
column 4
等删除标题,以Excel文件中数据集中的第一个标题为标题。我添加了两张图像,一幅是Excel,一幅是获取Excel数据的数据集,但是显示了column 0
column 1
等如何显示如何删除它。
Stream stream = file.InputStream;
IExcelDataReader reader = null;
if (file.FileName.EndsWith(".xls"))
{
reader = ExcelReaderFactory.CreateBinaryReader(stream);
}
else if (file.FileName.EndsWith(".xlsx"))
{
reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
}
else
{
ModelState.AddModelError("File", "This file format is not supported");
return RedirectToAction("Index");
}
DataSet dsresult = reader.AsDataSet();
string filedetails = path + fileName;
FileInfo fileinfo = new FileInfo(filedetails);
if (fileinfo.Exists)
{
fileinfo.Delete();
}
DataTable dt = new DataTable();
dt = dsresult.Tables[0];
dt.Rows.Remove(dt.Rows[0]);
try
{
var bl = new BusinessLayer();
var data = bl.BatchInsert(dt);
obj = new { resp = data, error = "" };
}
catch (Exception ex)
{
Logger.Error(ex.Message);
obj = new { resp = "", error = ex.Message.ToString() };
}
dt = null;
答案 0 :(得分:1)
您需要指定第一行是标题:
DataSet dsresult = reader.AsDataSet(new ExcelDataSetConfiguration() {
ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration() {
// Gets or sets a value indicating whether to use a row from the
// data as column names.
UseHeaderRow = true
}
});