目前我可以使用exceldatareader库将excel文件导入gridview。现在,我想进一步改进将多个Excel工作表导入gridview。这是我想要做的输出。 ImageOutput 我能够将excel表名称放入下拉列表中,但我不知道如何从第二张表中获取数据。我试过谷歌,但仍然无法找到任何答案。
现在我的问题是如何从下拉列表中选择工作表名称并在gridview中显示工作表数据。
以下是我的代码:
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();
}
}
答案 0 :(得分: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);
}
答案 1 :(得分:0)
您的result
是一个DataSet
个对象,其Tables[]
属性,ExcelDataReader
将每个工作表存储为一个表格。
所以,我认为你应该改变
GridView1.DataSource = result;
到
GridView1.DataSource = result.Tables[ddlSheet.SelectedText];