Я создал форму, у которой есть DataGrid, и она загружается из файла Excel. Я хочу показать имя листа файла Excel в поле со списком. Я нашел свое решение, чтобы показать имя листа Excel в поле со списком. Но я хочу, чтобы, когда я изменил свой элемент со списком, заполненное представление данных зависело от листа Excel, который я изменял в своем поле со списком.
[IMG] http://i67.tinypic.com/153l82v.jpg[/IMG]
Как я могу это сделать?
Мой код:
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.Data.OleDb;
using System.IO;
namespace excel2access
{
public partial class Form2 : Form
{
string FilePath;
string CB;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog OpenFD = new OpenFileDialog();
OpenFD.FileName = "";
OpenFD.Title = "Choose Excel file to Upload Data ";
OpenFD.DefaultExt = "xls";
OpenFD.Filter = "Ms-Excel Files (*.xls)|*.xls|All Files|*.*";
if (OpenFD.ShowDialog() == DialogResult.OK)
{
FilePath = OpenFD.InitialDirectory + OpenFD.FileName;//Code to get FullPath, Filename and extension
textBox1.Text = FilePath;
string excelConnStr = string.Empty;
OleDbCommand excelCommand = new OleDbCommand();
if (FilePath.EndsWith(".xlsx"))
{
//2007 Format
excelConnStr =string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0};Extended Properties='Excel 8.0;HDR=No'", FilePath);
}
else
{
//2003 Format
excelConnStr= string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Extended Properties='Excel 8.0;HDR=No'", FilePath);
}
//Get the Sheets in Excel Workbook
OleDbConnection excelConn = new OleDbConnection(excelConnStr);
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
cmdExcel.Connection = excelConn;
excelConn.Open();
comboBox1.DataSource = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
comboBox1.DisplayMember = "TABLE_NAME";
comboBox1.ValueMember = "TABLE_NAME";
CB = comboBox1.DisplayMember;
DataTable dtsheet = new DataTable();
dtsheet = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
OleDbDataAdapter da = new OleDbDataAdapter("select * from [" + comboBox1.Text + "]", excelConnStr);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}
}
}
}