Импортируйте несколько листов Excel в gridview с помощью exceldatareader
В настоящее время я могу импортировать файл Excel в gridview с помощью библиотеки Exceldatareader. Теперь я хочу усовершенствовать импорт нескольких листов Excel в gridview. Это вывод, который я хочу сделать. ImageOutput Мне удалось получить имя листа Excel в раскрывающемся списке, но я понятия не имею, как получить данные со второго листа. Я попробовал Google, но до сих пор не нашел ответа.
Итак, теперь моя проблема, как я могу выбрать имя листа из выпадающего списка и показать эти данные листа в виде сетки.
Ниже мой код:
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();
}
}
2 ответа
Ваш result
это DataSet
объект, который имеет Tables[]
собственность и ExcelDataReader
сохраняет каждый лист в виде таблицы.
Итак, я думаю, что вы должны изменить
GridView1.DataSource = result;
в
GridView1.DataSource = result.Tables[ddlSheet.SelectedText];
Хм, интересно. Я никогда не пробовал то, что вы описали здесь, но я думаю, что ссылка ниже поможет вам начать.
https://msdn.microsoft.com/en-us/library/aa480727.aspx?f=255&MSPPError=-2147217396
Кроме того, ниже приведен небольшой пример кода, чтобы все заработало.
Вы можете использовать библиотеку Excel по этой ссылке http://code.google.com/p/excellibrary/. На этой странице приведен пример кода, демонстрирующий, как читать из файла 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);
}