注意,由于我没有安装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); }
今天就到此为止把,虽然都很简单,但了解一下,对以后熟练开发还是有好处的。例子非常简单,代码都在上面,到本系列完成后,再打包一份代码。