您好,登錄后才能下訂單哦!
如何在.NET利用pire.Xls工具讀寫Excel文件?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
1.Excel文檔的創建、加載與保存
我們的上一篇文章的初步介紹中,有一個Hello Excel的例子,其實就已經包括了Excel文件新建和保存的方法,非常簡單。這一節將著重對每個細節進行更詳細點的研究。
1.1 保存Excel文件
Excle文件的保存都是使用Workbook的SaveToFile方法,有以下幾個版本,可以根據自己的需要,根據文件名,Excel文件版本,以及文件格式來保存,方法原型如下,比較簡單不再演示,在后續的文章中會在代碼中用到。
//根據文件名,文件版本,文件格式信息來保存文件 public void SaveToFile(string fileName); public void SaveToFile(string fileName, ExcelVersion version); public void SaveToFile(string fileName, FileFormat fileFormat); public void SaveToFile(string fileName, string separator);
1.2 從不同途徑加載Excel
使用C#操作Excel文件,不一定都是生成Excel文件報表之類的,有時候也需要加載已經存在的數據(XML,Excle等)來進行修改,然后保存到對應的Excel文件中去。加載到Excel的方法是Workbook對象的LoadFromFile、LoadFromStream、LoadFromXml等方法,方法原型有以下幾個:
//從文件加載,根據文件名,保護模式和Excel版本 public void LoadFromFile(string fileName); public void LoadFromFile(string fileName, bool preserveMode); public void LoadFromFile(string fileName, ExcelVersion version); public void LoadFromFile(string fileName, string separator); public void LoadFromFile(string fileName, string separator, int row, int column); public void LoadFromFile(string fileName, string separator, int row, int column, ExcelVersion version); //從數據流中加載 public void LoadFromStream(Stream stream); public void LoadFromStream(Stream stream, bool loadStyles); public void LoadFromStream(Stream stream, ExcelVersion version); //從XML文件加載 public void LoadFromXml(Stream stream); public void LoadFromXml(string fileName); //從模版文件加載 public void LoadTemplateFromFile(string fileName); public void LoadTemplateFromFile(string fileName, bool loadStyles);
2.C#設置Excel文件屬性
文件屬性這個雖然一般人很少用到,但還是介紹一下,畢竟如果文件分發出去的話,將相關屬性信息添加完整,還是很有必要的。Excel文件屬性可以點擊文件右鍵-屬性看到界面,如下圖我使用WPS查看的Excel文件屬性,使用Office Excel查看的話,是右邊的樣子,雖然顯示不一樣,但原理是一樣的:
1.WPS顯示的Excel屬性 2.Office Excle顯示的文件屬性
設置Excel文件屬性的方法在Workbook對象的DocumentProperties屬性中,這個屬性是一個XlsBuiltInDocumentProperties類型,在Spire.Xls.Core.Spreadsheet.Collections命名空間,通過VS的對象瀏覽器也可以發現其實現的一些原理,可以擴展到其他的組件使用中。看看一個簡單的例子:
#region 2.Excel文件屬性例子 static void ExcelTest2() { Workbook workbook = new Workbook(); //修改文檔屬性信息,這樣在發布的時候,可以通過文檔顯示公司以及文件人的信息 workbook.DocumentProperties.Author = "張三"; //作者 workbook.DocumentProperties.Subject = "測試文件屬性"; //主題 workbook.DocumentProperties.Title = "測試Excel文件"; //標題 workbook.DocumentProperties.Company = "XX有限公司"; //單位 workbook.DocumentProperties.Comments = "保留文件評論"; //評論 workbook.DocumentProperties.Keywords = "測試 Excel "; //關鍵詞 workbook.DocumentProperties.CreatedTime = DateTime.Now; //創建時間 //TODO:還有其他屬性,可以參考XlsBuiltInDocumentProperties的相關屬性 //將Excel文件保存到指定文件,還可以指定Excel版本 workbook.SaveToFile("Sample.xls", ExcelVersion.Version2007); } #endregion
注意,由于我沒有安裝Office 2007及以上版本,用WPS顯示的時候,有點問題,要用WPS轉換為2003版本后才能看出來,這可能是WPS的原因,調試生成的文件發現,這些屬性值都是存在的。所以我也沒去折騰,安裝個Office 真的很麻煩。
3.C#加密和保護Excel文件
相信很多人都用過Office的加密以及保護功能,對于Excel來說,加密和保護的范圍更加廣泛了:不僅可以加密文件,還可以保護指定的Sheet,指定的單元格等等。
3.1 加密Excel文件
Excel文件級的加密其實很簡單,就是Workbook對象的Protect方法,傳遞加密密碼即可;如果想要取消密碼,則使用workbook.UnProtect(),注意取消加密是不需要密碼的,Excel軟件操作也是的,所以程序操作也不需要。
#region 3.加密Excel文件例子 static void ExcelTest3() { Workbook workbook = new Workbook(); workbook.Protect("pwd111");//設置保護加密的 密碼 :pwd111 //將Excel文件保存 workbook.SaveToFile("Sample.xls", ExcelVersion.Version2007); } #endregion
加密后打開文件就是這個樣子了:
3.2 保護Sheet與單元格
Sheet的保護更加靈活一點,使用的是Worksheet對象的Protect方法,傳遞的參數是 保護的密碼,以及可選的保護類型(更加豐富的保護類型),看看下面的例子:
Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0]; //保護sheet sheet.Protect("test", SheetProtectionType.All); //將Excel文件保存 workbook.SaveToFile("Sample.xlsx", ExcelVersion.Version2010);
實現的效果應該和WPS的“保護工作表”界面類似,如下圖:
保護工作表的作用一般是防止誤操作或者對于有版權保護的,不能輕易更改的情況。大家看情況使用,我這里很少用到,只是了解到了,順便說一下。
static void ExcelTest4() { Workbook workbook = new Workbook(); workbook.CreateEmptySheets(1); Worksheet sheet = workbook.Worksheets[0]; sheet.Range["A1"].Text = "鎖定"; sheet.Range["B1"].Text = "未鎖定"; sheet.Range["A1"].Style.Locked = true; sheet.Range["B1"].Style.Locked = false; //一定要對工作表進行保護,才能生效 sheet.Protect("test", SheetProtectionType.All); workbook.SaveToFile(@"Sample_Lock.xlsx", ExcelVersion.Version2010); }
關于如何在.NET利用pire.Xls工具讀寫Excel文件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。