【发布时间】:2021-04-19 19:37:26
【问题描述】:
我正在尝试在 DataGrindView 上显示 Excel 工作表。我在互联网上找到了一个解决方案,但是当我尝试浏览 Excel 文件时出现错误。有人可以帮我解决这个问题吗?
浏览按钮代码如下:
private void btnBrowse_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog() { Filter = "Excel 97-2003 Workbook|*.xls|Excel Workbook|*.xlsx" })
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
txtFilename.Text = openFileDialog.FileName;
using (var stream = File.Open(openFileDialog.FileName, FileMode.Open, FileAccess.Read))
{
using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
{
DataSet result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration() { UseHeaderRow = true }
});
tableCollection = result.Tables;
cboxSheet.Items.Clear();
foreach (DataTable table in tableCollection)
cboxSheet.Items.Add(table.TableName);//add sheet to combobox
}
}
}
}
}
编辑:
你好,
这是我第一次在 Stackoverflow 上发帖,对我的错误深表歉意。
我将更详细地解释项目和错误。
This's my Form Application format
这是表单代码。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using ExcelDataReader;
using System.Data.OleDb;
namespace emailsender
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void cboxSheet_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridView1.DataMember = cboxSheet.SelectedItem.ToString();
}
private void btnBrowse_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog() { Filter = "Excel 97-2003 Workbook|*.xls|Excel Workbook|*.xlsx" })
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
txtFilename.Text = openFileDialog.FileName;
using (var stream = File.Open(openFileDialog.FileName, FileMode.Open, FileAccess.Read))
{
using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
{
DataSet result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration() { UseHeaderRow = true }
});
//tableCollection = result.Tables;
cboxSheet.Items.Clear();
foreach (DataTable table in result.Tables)
cboxSheet.Items.Add(table.TableName);//add sheet to combobox
dataGridView1.DataSource = result;
cboxSheet.SelectedIndex = 0;
}
}
}
}
}
}
}
我尝试了@JohnG's 示例,但是当我使用文件资源管理器选择文件并按下打开按钮时,我得到了同样的错误。
我无法完全理解我错过的重点......
【问题讨论】:
-
之前有人问过这个问题,你看看这对你有用吗? import-excel-to-datagridview
-
不适合我..
-
你说它不起作用,你能解释一下到底是什么不起作用吗?
-
我编辑了帖子并试图更详细地解释问题。抱歉解释不好..
-
请看我更新的答案。您的应用程序似乎是使用不同编码的“.Net”应用程序。
标签: c# excel datagridview