寫入excel:
System.Windows.Forms.SaveFileDialog sd=new System.Windows.Forms.SaveFileDialog();sd.Filter="Excel 2003 文檔|*.xls";if(sd.ShowDialog()==System.Windows.Forms.DialogResult.OK){ FileStream fs=new FileStream(sd.FileName,FileMode.Create,FileAccess.Write); StreamWriter sw=new StreamWriter(fs,Encoding.Default); string line=""; //寫入欄位標題 for (int i = 0; i < datamain.Columns.Count; i++) { line += datamain.Columns[i].Header.ToString() + "\t"; } sw.WriteLine(line); for (int j = 0; j < datamain.Items.Count; j++) { Statresult dt = datamain.Items[j] as Statresult; line = dt.Client + "\t" + dt.Total + "\t" + dt.Receive + "\t" + dt.Rates + "\t" + dt.Inspection + "\t" + dt.Bugnum + "\t" + dt.Qualified + "\t"; sw.WriteLine(line); } //關閉流 sw.Close(); fs.Close(); MessageBox.Show("資料已經成功匯出!","注意",MessageBoxButton.OK,MessageBoxImage.Information);}
讀取excel:
//以oledb方式串連excel檔案並將混合型作為文本型讀取strConn = "Provider=Microsoft.Jet. OLEDB.4.0;Data Source=D:\\Test.xls;Extended Properties='Excel8.0;HDR=Yes;IMEX=1'"; OleDbConnection conn = new OleDbConnection(strCon);//將工作表作為資料表string sql = "SELECT * FROM [Sheet1$]";OleDbDataAdapter adp = new OleDbDataAdapter(sql,conn);DataSet myDataSet = new DataSet();adp.Fill(myDataSet,"[Sheet1$]");
其中讀取主要注意的是Extended Properties='Excel8.0;HDR=Yes;IMEX=1',Excel8.0代表的是用什麼版本的Execl程式讀取檔案,HDR=Yes代表第一行是作為表格的欄位,IMEX=1代表第一行是表格欄位。以上這些參數必須
要用單引號包括起來,不然會報錯的。"SELECT * FROM [Sheet1$]"中的[Sheet1$]代表的是Execl檔案中的活頁簿,假設你的活頁簿叫“asd”,那麼查詢的表名就是"SELECT * FROM [asd$]";
以上幾點,是應用過程運到的問題,比較容易忽略,導致錯誤。
以上主要內容是參考http://www.cnblogs.com/861580030/archive/2011/01/14/1935246.html,自己應用在加上自己的理解。