国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C# API: 生成和讀取Excel文件

2019-11-17 03:05:26
字體:
來源:轉載
供稿:網友
C# API: 生成和讀取Excel文件

我們想為用戶提供一些數據,考慮再三, 大家認為對于用戶(人,而非機器)的可讀性, Excel文件要好一些.

因為相比csv,xml等文件, Excel中我們可以運用自動篩選, 窗口鎖定, 還可以控制背景顏色, 前景顏色, 字體, 網格等等...

業務邏輯并不復雜, 文件的內容和格式也比較固定,所以大家決定直接拿C#去創建這些文件.

于是一搜索,首先來到了這個鏈接:C# Excel Tutorial

里面包含了下面這些主題的代碼示例, 示例很詳細, 編譯可直接運行.

  • How to create Excel file in C#
  • How to open an Excel file in C#
  • How to read an Excel file in CSharp
  • How to format an Excel file using C#
  • How to insert a picture in excel from C# App
  • How to insert a background picture in excel
  • How to create Excel Chart from C#
  • How to export excel chart from C#
  • How to excel chart in C# picturebox
  • C# data validation input box in excel file
  • How to read from an Excel file using OLEDB
  • How to insert data to Excel file using OLEDB
  • How to update data in Excel file using OLEDB
  • How to export databse to excel file
  • How to export DataGridView to excel file

為了理解上面這些代碼需要理解一下Excel的對象模型, 可以參考msdn的下面這個鏈接

Excel Object Model Overview

里面介紹了4個核心對象:

  • Microsoft.Office.Interop.Excel.application

  • Microsoft.Office.Interop.Excel.Workbook

  • Microsoft.Office.Interop.Excel.Worksheet

  • Microsoft.Office.Interop.Excel.Range

前三個對象比較好理解, 關鍵在于第四個對象:Range.

起初我以為更改一些單元格的字體顏色格式等等的, 是需要通過Cell這個對象來做.

看完了之后才發現, 這些操作其實都是通過Range來完成的.

還包括和并單元格, 設置網格線等等, 甚至讀取和設置一個單元格的值,都可以通過Range來完成,

所以基本上當我們操作excel的時候, 我們最經常的就是和Range對象打交道, 而很少使用Cell等對象.

如果有什么需求不知道怎么實現,

建議可以先到Range對象里面翻一翻, 看看msdn上Range對象的Members,Methods,PRoperties的相關文檔.

還有一點要補充的是:

不僅僅是C#, 還包括其他語言的Excel API, 都是對Excel對象模型的直接模擬和包裝.不過java,Ruby等等.

也就是說, 其他語言的Excel API也都會有上面那四個主要對象, 而且也都會以近乎相同的方式, 干著差不多的事兒.

接下來想寫一寫關于Missing.Value的事兒

對于前面給出的,創建Excel表的例子的代碼, 轉載如下:

這段代碼中,很多函數調用都傳遞了這個參數:

object misValue = System.Reflection.Missing.Value;

他的詳細介紹參考這個鏈接Missing Class上面的例子,

簡單的說就是:

當我想以一些參數的默認值來調用一些dll中的方法的, 我們在方法調用中忽略掉這些參數也不對,

我們用null傳遞給這些參數還不對,

這時我們便可以給這些參數賦值以Missing.Value來告訴運行時環境, 用這個參數的默認值幫我運行吧.

對于這段代碼還有一個需要注意的問題:

注意Application,Workbook,Worksheet這三個對象的清理工作

該保存的保存, 該close的close, 該quit的quit, 最后, 他們還都應該被release

C#代碼收藏代碼
  1. usingSystem;
  2. usingSystem.Windows.Forms;
  3. usingExcel=Microsoft.Office.Interop.Excel;
  4. namespaceWindowsApplication1
  5. {
  6. publicpartialclassForm1:Form
  7. {
  8. publicForm1()
  9. {
  10. InitializeComponent();
  11. }
  12. privatevoidbutton1_Click(objectsender,EventArgse)
  13. {
  14. Excel.ApplicationxlApp;
  15. Excel.WorkbookxlWorkBook;
  16. Excel.WorksheetxlWorkSheet;
  17. objectmisValue=System.Reflection.Missing.Value;
  18. xlApp=newExcel.ApplicationClass();
  19. xlWorkBook=xlApp.Workbooks.Add(misValue);
  20. xlWorkSheet=(Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
  21. xlWorkSheet.Cells[1,1]="http://csharp.net-informations.com";
  22. xlWorkBook.SaveAs("csharp-Excel.xls",Excel.XlFileFormat.xlWorkbookNormal,misValue,misValue,misValue,misValue,Excel.XlSaveAsaccessMode.xlExclusive,misValue,misValue,misValue,misValue,misValue);
  23. xlWorkBook.Close(true,misValue,misValue);
  24. xlApp.Quit();
  25. releaSEObject(xlWorkSheet);
  26. releaseObject(xlWorkBook);
  27. releaseObject(xlApp);
  28. MessageBox.Show("Excelfilecreated,youcanfindthefilec://csharp-Excel.xls");
  29. }
  30. privatevoidreleaseObject(objectobj)
  31. {
  32. try
  33. {
  34. System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
  35. obj=null;
  36. }
  37. catch(Exceptionex)
  38. {
  39. obj=null;
  40. MessageBox.Show("ExceptionOccuredwhilereleasingobject"+ex.ToString());
  41. }
  42. finally
  43. {
  44. GC.Collect();
  45. }
  46. }
  47. }
  48. }

最后想寫一下關于如何設置字體的顏色, 以及單元格的背景顏色的事兒.

以背景色設置為紅色為例, 首先我們可以寫出形如下面這樣的代碼:

C#代碼
上一篇:c#的多線程


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普格县| 武城县| 庆城县| 高邑县| 宁海县| 蒙山县| 南澳县| 大足县| 蒙阴县| 外汇| 永登县| 黎川县| 安丘市| 太保市| 拉萨市| 临泉县| 宿松县| 那曲县| 论坛| 黄平县| 武定县| 东辽县| 大化| 那曲县| 张家口市| 西和县| 开封县| 五家渠市| 厦门市| 正定县| 瓮安县| 曲阳县| 永清县| 定兴县| 郴州市| 疏附县| 东乌| 江山市| 汪清县| 安西县| 华坪县|