从Excel提取数据

时间:2018-07-27 18:42:14

标签: c# excel asp.net-mvc

我正在尝试通过上传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;

1 个答案:

答案 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         
    }
});

检查Github page