[英]Import Excel Sheet to DataGridView c#
我使用的是Visual Studio2010。使用OleDB,如何将Excel表格的选定列和行导入到datagridView1
? 假设我的行和列从B13开始并获得至少B13的20行。
有人有示例代码或链接可以帮助我做到这一点吗? 非常感谢!
您可以通过以下命令执行此操作:
"SELECT * FROM [<SheetName>$<optional range>]";
//Ex : OleDbCommand OleConnection = new OleDbCommand("SELECT * FROM [Sheet1$B13:B33]", Con);
完整代码在这里:
try
{
OpenFileDialog dlg_im = new OpenFileDialog();
dlg_im.Filter = "Excel File|*.xls;*.xlsx;*.xlsm";
//dlg_im.Filter = "Excel File|*.xlsx";
if (dlg_im.ShowDialog() == DialogResult.OK)
{
dataGridView1.Rows.Clear();
textBox1.Text = dlg_im.FileName;
string name = "Sheet1";
string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + textBox1.Text + ";Extended Properties='Excel 12.0 XML;HDR=YES;';";
OleDbConnection Con = new OleDbConnection(constr);
OleDbCommand OleConnection = new OleDbCommand("SELECT * FROM [Sheet1$B13:B33]", Con);
Con.Open();
OleDbDataAdapter sda = new OleDbDataAdapter(OleConnection);
DataTable data = new DataTable();
sda.Fill(data);
dataGridView1.DataSource = data;
dataGridView1.ReadOnly = true;
dataGridView1.Columns[0].Width = 320;
dataGridView1.ClearSelection();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
MessageBox.Show("Done");
如果要将Excel文件的列导入到可用的datagridview中的空列。
例如:您具有如下datagridview,并且您想读取excel文件并导入到“类”列中
假设您想将Excel文件的范围从A1到A11的数据添加到datagridview中的“类”列(第二列)
private void button3_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog dlg_im = new OpenFileDialog();
dlg_im.Filter = "Excel File|*.xls;*.xlsx;*.xlsm";
//dlg_im.Filter = "Excel File|*.xlsx";
if (dlg_im.ShowDialog() == DialogResult.OK)
{
textBox1.Text = dlg_im.FileName;
string name = "Sheet1";
string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + textBox1.Text + ";Extended Properties='Excel 12.0 XML;HDR=YES;';";
OleDbConnection Con = new OleDbConnection(constr);
OleDbCommand OleConnection = new OleDbCommand("SELECT *FROM [Sheet1$A1:A11]", Con);
Con.Open();
OleDbDataAdapter sda = new OleDbDataAdapter(OleConnection);
DataTable data = new DataTable();
sda.Fill(data);
int i = 0;//The position of row in datagridview you want to start adding
foreach (DataRow dr in data.Rows)
{
Console.WriteLine(dr.ItemArray[0]);
dataGridView1.Rows[i].Cells[2].Value = dr.ItemArray[0];//Cells[2] --> Columns[2] --> Column Class
i++;
}
dataGridView1.ClearSelection();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
这是输出:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.