0

目前我可以使用 exceldatareader 库将 excel 文件导入到 gridview 中。现在,我想进一步改进将多个 Excel 工作表导入到 gridview 中。这是我想做的输出。ImageOutput 我能够将 excel 工作表名称放入下拉列表,但我不知道如何从第二张工作表中获取数据。我尝试了谷歌,但仍然找不到任何答案。

所以现在我的问题是如何从下拉列表中选择工作表名称并在网格视图中显示该工作表数据。

下面是我的代码:

public partial class ReadExcel : System.Web.UI.Page
{
    DataSet result;
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btnLoad_Click(object sender, EventArgs e)
    {
        dataUpload();
    }
    protected void dataUpload()
    {
        if (FileUpload1.HasFile)
        {
            string path = Path.GetFileName(FileUpload1.PostedFile.FileName);
            string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
            string filepath = Server.MapPath("~/" + path);
            FileUpload1.SaveAs(filepath);
            FileStream stream = File.Open(filepath, FileMode.Open, FileAccess.Read);
            //for excel 2003
            // IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
            // for Excel 2007
            IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
            excelReader.IsFirstRowAsColumnNames = true;
            result = excelReader.AsDataSet();
            ddlSheet.Items.Clear();
            foreach(DataTable dt in result.Tables)
            {
                ddlSheet.Items.Add(dt.TableName);
            }
            //excelReader.IsFirstRowAsColumnNames = true;
            while (excelReader.Read())
            {
                // int i = excelReader.GetInt32(0);
                GridView1.DataSource = result;
                GridView1.DataBind();
            }

        }
        else
        {
            lblError.Text = "Unable to upload the selected file. Please check the selected file path or confirm that the file is not blank!";
        }
    }

    protected void ddlSheet_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridView1.DataSource = result;
        GridView1.DataBind();
    }
}
4

2 回答 2

0

嗯,有趣。我从未尝试过您在此处描述的内容,但我认为下面的链接将帮助您入门。

https://msdn.microsoft.com/en-us/library/aa480727.aspx?f=255&MSPPError=-2147217396

此外,下面是一个小的代码示例,可以让事情顺利进行。

您可以通过此链接http://code.google.com/p/excellibrary/使用 excel 库。此页面上实际上提供了一个示例代码,它演示了如何从 excel 文件中读取。

using ExcelLibrary.SpreadSheet;

// open xls file
Workbook book = Workbook.Load(file);
Worksheet sheet = book.Worksheets[0];

// iterate with a proper condition, at the moment it will iterate with a given length!
for (int i = 0; i < length; i++)
{
  comboBox.Items.Add(sheet.Cells[i,column_index].Value);
}
于 2017-04-03T13:37:43.700 回答
0

Yourresult是一个DataSet具有Tables[]属性并将ExcelDataReader每个工作表存储为表格的对象。
所以,我认为你应该改变

GridView1.DataSource = result;

GridView1.DataSource = result.Tables[ddlSheet.SelectedText];
于 2018-06-11T10:37:55.540 回答