C#操作Excel文件三種方式
彭世瑜2021-07-12 16:14:28
文章標(biāo)簽C/C++文章分類C/C++后端開發(fā)閱讀數(shù)5317
.Net平臺(tái)上對(duì)Excel進(jìn)行操作主要有兩種方式。第一種,把Excel文件看成一個(gè)數(shù)據(jù)庫,通過OleDb的方式進(jìn)行讀取與操作;第二種,調(diào)用Excel的COM組件。兩種方式各有特點(diǎn)。
注意一些簡單的問題1.excel文件只能存儲(chǔ)65535行數(shù)據(jù),如果你的數(shù)據(jù)大于65535行,那么就需要將excel分割存放了。2.關(guān)于亂碼,這主要是字符設(shè)置問題。
一、OleDb方式
讀取Excel文件
C#操作Excel文件三種方式_C/C++
1 //加載Excel
2 public static DataSet LoadDataFromExcel(string filePath)
3 {
4 try
5 {
6 string strConn;
7 strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + filePath + “;Extended Properties=‘Excel 8.0;HDR=False;IMEX=1’”;
8 OleDbConnection OleConn = new OleDbConnection(strConn);
9 OleConn.Open();
10 String sql = “SELECT * FROM [Sheet1$]”;//可是更改Sheet名稱,比如sheet2,等等
11
12 OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
13 DataSet OleDsExcle = new DataSet();
14 OleDaExcel.Fill(OleDsExcle, “Sheet1”);
15 OleConn.Close();
16 return OleDsExcle;
17 }
18 catch (Exception err)
19 {
20 MessageBox.Show(“數(shù)據(jù)綁定Excel失敗!失敗原因:” + err.Message, “提示信息”,
21 MessageBoxButtons.OK, MessageBoxIcon.Information);
22 return null;
23 }
24 }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
C#操作Excel文件三種方式_C/C++
訪問.xls的文件使用的是“Microsoft.Jet.OLEDB.4.0”,訪問.xlsx的文件使用的是“Microsoft.Ace.OleDb.12.0”
寫入excel文件
C#操作Excel文件三種方式_C/C++
1 ///
2 /// 寫入Excel文檔
3 ///
4 public bool SaveFP2toExcel(string filePathath)
5 {
6 try
7 {
8 string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”+ filePathath +“;Extended Properties=Excel 8.0;”;
9 OleDbConnection conn = new OleDbConnection(strConn);
10 conn.Open();
11 System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();
12 cmd.Connection =conn;
13
14 for(int i=0;i0].RowCount -1;i++)
15 {
16 if(fp2.Sheets [0].Cells[i,0].Text!=“”)
17 {
18 cmd.CommandText =“INSERT INTO [sheet1$] (工號(hào),姓名,部門,職務(wù),日期,時(shí)間) VALUES('”+fp2.Sheets [0].Cells[i,0].Text+ “‘,’”+
19 fp2.Sheets [0].Cells[i,1].Text+“‘,’”+fp2.Sheets [0].Cells[i,2].Text+“‘,’”+fp2.Sheets [0].Cells[i,3].Text+
20 “‘,’”+fp2.Sheets [0].Cells[i,4].Text+“‘,’”+fp2.Sheets [0].Cells[i,5].Text+“')”;
21 cmd.ExecuteNonQuery ();
22 }
23 }
24
25 conn.Close ();
26 return true;
27 }
28 catch(System.Data.OleDb.OleDbException ex)
29 {
30 Console.WriteLine (“寫入Excel發(fā)生錯(cuò)誤:”+ex.Message );
31 return false;
32 }
33 }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
C#操作Excel文件三種方式_C/C++
二、Excel COM組件
一個(gè).NET組件事實(shí)上是一個(gè).NET下的DLL,它包含的不僅是運(yùn)行程序本身,更重要的是包含這個(gè)DLL的描述信息(Meta Data,即元數(shù)據(jù)),而一個(gè)COM組件是用其類庫(TLB)儲(chǔ)存其描述信息。這些COM組件都是非受管代碼,要在Visual C#中使用這些非受管代碼的COM組件,就必須把他們轉(zhuǎn)換成受管代碼的.NET組件。所以在用Visual C#調(diào)用Excel表格之前,必須完成從COM組件的非受管代碼到受管代碼的類庫的轉(zhuǎn)換。
添加COM組件
Create an Automation Client for Microsoft Excel
Start Microsoft Visual Studio .NET.
On the File menu, click New, and then click Project. Select Windows Application from the Visual C# Project types. Form1 is created by default.
Add a reference to the Microsoft Excel Object Library. To do this, follow these steps:
On the Project menu, click Add Reference.
On the COM tab, locate Microsoft Excel Object Library, and click Select.
Click OK in the Add References dialog box to accept your selections. If you are prompted to generate wrappers for the libraries that you selected, click Yes.
using Excel = Microsoft.Office.Interop.Excel;
讀取Excel文件
C#操作Excel文件三種方式_C/C++
1 private void button1_Click(object sender, EventArgs e)
2 {
3 Excel.Application xlApp ;
4 Excel.Workbook xlWorkBook ;
5 Excel.Worksheet xlWorkSheet ;
6 Excel.Range range ;
7
8 string str;
9 int rCnt = 0;
10 int cCnt = 0;
11
12 xlApp = new Excel.Application();
13 xlWorkBook = xlApp.Workbooks.Open(“csharp.net-informations.xls”);
14 xlWorkSheet = xlWorkBook.Sheets[“Sheet1”];
15
16 range = xlWorkSheet.UsedRange;
17
18 for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
19 {
20 for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
21 {
22 str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2 ;
23 MessageBox.Show(str);
24 }
25 }
26
27 xlWorkBook.Close(true, null, null);
28 xlApp.Quit();
29 }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
C#操作Excel文件三種方式_C/C++
寫入Excel文件
C#操作Excel文件三種方式_C/C++
1 private void button1_Click(object sender, EventArgs e)
2 {
3 Excel.Application xlApp ;
4 Excel.Workbook xlWorkBook ;
5 Excel.Worksheet xlWorkSheet ;
6 object misValue = System.Reflection.Missing.Value;
7
8 xlApp = new Excel.Application();
9 xlWorkBook = xlApp.Workbooks.Add(misValue);
10 xlWorkSheet = xlWorkBook.Sheets[“Sheet1”];
11
12 //add some text
13 xlWorkSheet.Cells[1, 1] = “http://csharp.net-informations.com”;
14 xlWorkSheet.Cells[2, 1] = “Adding picture in Excel File”;
15
16 xlWorkBook.SaveAs(“csharp.net-informations.xls”, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
17 xlWorkBook.Close(true, misValue, misValue);
18 xlApp.Quit();
19
20 MessageBox.Show (“File created !”);
21 }
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
C#操作Excel文件三種方式_C/C++
主要參考:http://csharp.net-informations.com/excel/files/download/csharp-open-excel_download.htm
三、第三方插件-NPOI
摘要: NPOI,顧名思義,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java寫成的庫,能夠幫助開發(fā)者在沒有安裝微軟Office的情況下讀寫Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。在本文發(fā)布時(shí),NPOI的最新版本是2.2.1。文章來源:http://www.zghlxwxcb.cn/news/detail-611091.html
NPOI網(wǎng)址 http://npoi.codeplex.com/文章來源地址http://www.zghlxwxcb.cn/news/detail-611091.html
到了這里,關(guān)于C#操作Excel文件三種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!