麻煩的不在於資料庫的規劃,而是在於那些Excel檔案的格式問題…
而且要將那些資料一筆一筆的key in進去資料庫又很辛苦,所以就產生這篇文章了XDDD
在進行講解前可以先去看一下這篇文章『[C#]-讀取excel檔案寫入MS SQL Server』,這篇文章我個人認為寫得比微軟MVP還要清楚;而且又附有版本對應的命令
我在這隻程式裡面使用OpenFileDialog來選擇Excel檔案,有要選擇2003或2007版本可以參考這篇文章『OpenFileDialog如何設定多個Filter』
透過OleDbDataAdapter的方式將類似SQL語法丟進去執行,並且將資料寫回DataSet
將DataSet暫存資料給DataGridView
要特別注意這行,dataGridView1.DataSource = dataSet.Tables[0].DefaultView;
這行是將取得到資料選擇第0個表格,並且設定成dataGridView1.DataSource
網路上還有另一種寫法是如下方
adapter.Fill(dataSet,"TABLE1"); dataGridView1.DataSource = dataSet.Tables["TABLE1"].DefaultView;
跟目前寫法差在比較好辨識,就像你的同學有那麼多個
總是有個名字比較好叫人吧,號碼隨時會換
但是名字這種就很久才換一次吧?XD
using System; using System.Data; using System.Data.OleDb; using System.Windows.Forms; namespace OpenExcelForm { public partial class OpenExcelForm : Form { public OpenExcelForm() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog file = new OpenFileDialog(); file.Filter = "Excel|*.xls"; if (file.ShowDialog() == DialogResult.OK) { String path = file.FileName; string excelConn = "Provider = Microsoft.Jet.OLEDB.4.0 ;Data Source = " + path + ";Extended Properties = 'Excel 8.0;HDR=YES'"; string strExcelSelect = "SELECT * FROM [Sheet1$]"; OleDbDataAdapter adapter = new OleDbDataAdapter(strExcelSelect, excelConn); DataSet dataSet = new DataSet(); adapter.Fill(dataSet); dataGridView1.DataSource = dataSet.Tables[0].DefaultView; } } } }
參考資料:
http://chunghsien-world.blogspot.tw/2010/07/c-excelms-sql-server.html
http://blog.csdn.net/rocky69/article/details/7259697
http://www.dotblogs.com.tw/yc421206/archive/2012/03/09/70624.aspx