要避免将Excel数据复制粘贴到DataGridView表头,可以通过以下解决方法:
下面是一个示例代码,演示了如何实现上述解决方法:
using System;
using System.Data;
using System.Windows.Forms;
using ExcelDataReader;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
using (var stream = File.Open(openFileDialog.FileName, FileMode.Open, FileAccess.Read))
{
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
var result = reader.AsDataSet();
// 创建一个新的DataTable对象
DataTable dataTable = new DataTable();
// 将Excel中的数据存储到新的DataTable对象中
foreach (DataTable table in result.Tables)
{
foreach (DataRow row in table.Rows)
{
if (row.ItemArray.Length > 0)
{
dataTable.Rows.Add(row.ItemArray);
}
}
}
// 将新的DataTable对象绑定到DataGridView控件的DataSource属性
dataGridView1.DataSource = dataTable;
// 遍历DataGridView的列集合,禁用列头排序功能
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
}
}
}
}
}
在这个示例中,我们使用了ExcelDataReader库来读取Excel文件中的数据。然后,将数据存储到新的DataTable对象中,并将其绑定到DataGridView控件的DataSource属性。最后,通过遍历DataGridView的列集合,将每个列的SortMode属性设置为NotSortable,以禁用列头排序功能。