【原創】.NET讀寫Excel工具Spire.Xls使用(2)Excel文件的控制

                本博客全部文章分類的總目錄:http://www.cnblogs.com/asxinyu/p/4288836.htmlhtml

.NET讀寫Excel工具Spire.Xls使用文章目錄:http://www.cnblogs.com/asxinyu/p/4374032.html
瀏覽器

  前一篇文章:「.NET操做Excel利器Spire.Xls使用(1)入門介紹 」給你們介紹了Spire.XLS的基本功能和一些比較。這篇文章將重點介紹C#操做Excel文件時,對Excel文件自己的相關設置,全局控制的內容。由於這也是C#讀寫Excel文件時常常碰到的文章,也是我在使用過程當中的一個學習步驟。本文將首先介紹Spire.XLS建立和加載文檔的基礎知識,以及文件保存,多個Excel文件合併的操做方法,其中咱們還能夠對生成的Excel文件作更多詳細的設置,如,對Excel文件屬性進行設置等等,其次不少項目中,不只要生成Excel文件,還須要打印並獲取一些分頁信息;最後介紹一下使用C#設置加密保護Excel文件的方法。app

1.Excel文檔的建立、加載與保存

  咱們的上一篇文章的初步介紹中,有一個Hello Excel的例子,其實就已經包括了Excel文件新建和保存的方法,很是簡單。這一節將着重對每一個細節進行更詳細點的研究。工具

1.1 保存Excel文件

  Excle文件的保存都是使用Workbook的SaveToFile方法,有如下幾個版本,能夠根據本身的須要,根據文件名,Excel文件版本,以及文件格式來保存,方法原型以下,比較簡單再也不演示,在後續的文章中會在代碼中用到。學習

1 //根據文件名,文件版本,文件格式信息來保存文件
2 public void SaveToFile(string fileName);
3 public void SaveToFile(string fileName, ExcelVersion version);
4 public void SaveToFile(string fileName, FileFormat fileFormat);
5 public void SaveToFile(string fileName, string separator);

 1.2 從不一樣途徑加載Excel

  使用C#操做Excel文件,不必定都是生成Excel文件報表之類的,有時候也須要加載已經存在的數據(XML,Excle等)來進行修改,而後保存到對應的Excel文件中去。加載到Excel的方法是Workbook對象的LoadFromFile、LoadFromStream、LoadFromXml等方法,方法原型有如下幾個:測試

 1 //從文件加載,根據文件名,保護模式和Excel版本
 2 public void LoadFromFile(string fileName);
 3 public void LoadFromFile(string fileName, bool preserveMode);
 4 public void LoadFromFile(string fileName, ExcelVersion version);
 5 public void LoadFromFile(string fileName, string separator);
 6 public void LoadFromFile(string fileName, string separator, int row, int column);
 7 public void LoadFromFile(string fileName, string separator, int row, int column, ExcelVersion version);
 8 //從數據流中加載
 9 public void LoadFromStream(Stream stream);
10 public void LoadFromStream(Stream stream, bool loadStyles);
11 public void LoadFromStream(Stream stream, ExcelVersion version);
12 //從XML文件加載
13 public void LoadFromXml(Stream stream);
14 public void LoadFromXml(string fileName);
15 //從模版文件加載
16 public void LoadTemplateFromFile(string fileName);
17 public void LoadTemplateFromFile(string fileName, bool loadStyles);

2.C#設置Excel文件屬性

  文件屬性這個雖然通常人不多用到,但仍是介紹一下,畢竟若是文件分發出去的話,將相關屬性信息添加完整,仍是頗有必要的。Excel文件屬性能夠點擊文件右鍵-屬性看到界面,以下圖我使用WPS查看的Excel文件屬性,使用Office Excel查看的話,是右邊的樣子,雖然顯示不同,但原理是同樣的:ui

  
      1.WPS顯示的Excel屬性                                             2.Office Excle顯示的文件屬性加密

  設置Excel文件屬性的方法在Workbook對象的DocumentProperties屬性中,這個屬性是一個XlsBuiltInDocumentProperties類型,在Spire.Xls.Core.Spreadsheet.Collections命名空間,經過VS的對象瀏覽器也能夠發現其實現的一些原理,能夠擴展到其餘的組件使用中。看看一個簡單的例子: spa

 1 #region 2.Excel文件屬性例子
 2 static void ExcelTest2()
 3 {            
 4     Workbook workbook = new Workbook();
 5 
 6     //修改文檔屬性信息,這樣在發佈的時候,能夠經過文檔顯示公司以及文件人的信息
 7     workbook.DocumentProperties.Author = "張三";            //做者
 8     workbook.DocumentProperties.Subject = "測試文件屬性";   //主題
 9     workbook.DocumentProperties.Title = "測試Excel文件";    //標題
10     workbook.DocumentProperties.Company = "XX有限公司";     //單位
11     workbook.DocumentProperties.Comments = "保留文件評論";  //評論
12     workbook.DocumentProperties.Keywords = "測試 Excel ";   //關鍵詞
13     workbook.DocumentProperties.CreatedTime = DateTime.Now; //建立時間
14     //TODO:還有其餘屬性,能夠參考XlsBuiltInDocumentProperties的相關屬性          
15 
16     //將Excel文件保存到指定文件,還能夠指定Excel版本
17     workbook.SaveToFile("Sample.xls", ExcelVersion.Version2007);
18 }
19 #endregion

  注意,因爲我沒有安裝Office 2007及以上版本,用WPS顯示的時候,有點問題,要用WPS轉換爲2003版本後才能看出來,這多是WPS的緣由,調試生成的文件發現,這些屬性值都是存在的。因此我也沒去折騰,安裝個Office 真的很麻煩。 3d

3.C#加密和保護Excel文件

  相信不少人都用過Office的加密以及保護功能,對於Excel來講,加密和保護的範圍更加普遍了:不只能夠加密文件,還能夠保護指定的Sheet,指定的單元格等等。其實開源的NPOI組件也能夠這樣作,之前沒用過但瞭解過,用NPOI的朋友能夠看看這個:http://tonyqus.sinaapp.com/archives/196,既然要用Spire.XLS,那就看看如何作。

3.1 加密Excel文件

  Excel文件級的加密其實很簡單,就是Workbook對象的Protect方法,傳遞加密密碼便可;若是想要取消密碼,則使用workbook.UnProtect(),注意取消加密是不須要密碼的,Excel軟件操做也是的,因此程序操做也不須要。

1 #region 3.加密Excel文件例子
2 static void ExcelTest3()
3 {
4     Workbook workbook = new Workbook();
5     workbook.Protect("pwd111");//設置保護加密的 密碼 :pwd111
6     //將Excel文件保存
7     workbook.SaveToFile("Sample.xls", ExcelVersion.Version2007);
8 }
9 #endregion

加密後打開文件就是這個樣子了:

3.2 保護Sheet與單元格

   Sheet的保護更加靈活一點,使用的是Worksheet對象的Protect方法,傳遞的參數是 保護的密碼,以及可選的保護類型(更加豐富的保護類型),看看下面的例子:

1 Workbook workbook = new Workbook();
2 
3 Worksheet sheet = workbook.Worksheets[0];
4 
5 //保護sheet
6 sheet.Protect("test", SheetProtectionType.All);
7 
8 //將Excel文件保存
9 workbook.SaveToFile("Sample.xlsx", ExcelVersion.Version2010);

實現的效果應該和WPS的「保護工做表」界面相似,以下圖:

保護工做表的做用通常是防止誤操做或者對於有版權保護的,不能輕易更改的狀況。你們看狀況使用,我這裏不多用到,只是瞭解到了,順便說一下。

 1 static void ExcelTest4()
 2 {
 3     Workbook workbook = new Workbook();
 4     workbook.CreateEmptySheets(1);
 5     Worksheet sheet = workbook.Worksheets[0];
 6 
 7     sheet.Range["A1"].Text = "鎖定";
 8     sheet.Range["B1"].Text = "未鎖定";
 9 
10     sheet.Range["A1"].Style.Locked = true;
11     sheet.Range["B1"].Style.Locked = false;
12 
13     //必定要對工做表進行保護,才能生效
14     sheet.Protect("test", SheetProtectionType.All);
15 
16     workbook.SaveToFile(@"Sample_Lock.xlsx", ExcelVersion.Version2010);
17 }

  今天就到此爲止把,雖然都很簡單,但瞭解一下,對之後熟練開發仍是有好處的。例子很是簡單,代碼都在上面,到本系列完成後,再打包一份代碼。

相關文章
相關標籤/搜索