[英]How to disable cut/copy option for all cells in Excel using C# code?
/ *****- 編輯- 解決方案最終解決方案真的很奇怪。 我正在使用的Interop程序集包含禁用單元格選擇的方法( App.EnableSelection
)。 但這沒有用。 我安裝了MSOffice 2010(最初使用的是2007)。 現在,安裝了新版本的Assembly,並且根本沒有更改代碼,Excel表格在Excel2007和Excel2010上的行為均符合預期。 我仍然無法理解在組裝級別發生的情況,但是最終解決了我的問題。 :) ***** /
我正在編寫一個WPF應用程序,該程序以編程方式生成一個excel文件(這是一份工資報告)。 我已使用以下代碼保護了文件
myWorkSheet.Protect(Password);
該保護工作正常,但是,我不希望用戶能夠將任何單元格數據復制到另一張紙上。 我嘗試使用下面的代碼,但是它不起作用
myWorkSheet.Application.CutCopyMode = (Excel.XlCutCopyMode)0;
我仍然能夠復制單元格數據。 怎么了?
注意:環境是.NET Framework 4.5,MSOffice 2007,Microsoft.Office.Interop程序集版本1.6.0.0
真正奇怪的是Application.CutCopyMode
具有類型False
, xlCut
和xlCopy
[1]: https : xlCopy
我正在使用的程序集版本不包含False
類型。 我應該升級到Office 2010嗎?
我使用的COM參考是Microsoft Office 12.0對象庫版本1.6。
建議我鎖定單元格並禁用對它們的選擇,以防止用戶復制單元格數據。 這是代碼,但是不起作用。 不知道為什么。
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
//Adding some data to the sheet, modifying cells alignments,adding border,headers
xlWorkSheet.UsedRange.Cells.Locked = true;
xlWorkSheet.Protect("Lomesh", misValue, true, misValue, true, misValue,
misValue, misValue, misValue, misValue, misValue, misValue, misValue,
misValue, misValue, misValue);
xlWorkSheet.EnableSelection = Excel.XlEnableSelection.xlUnlockedCells;
上面的代碼不起作用。 我仍然能夠復制單元格數據。
//Saving using save dialog
xlWorkBook.SaveCopyAs(path);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
僅保護板料還不夠。 您還必須:
(1)鎖定單元格(如果尚未鎖定),以及
(2)將保護設置為不啟用對鎖定單元格的選擇:
myWorkSheet.EnableSelection = xlUnlockedCells
這將防止用戶選擇鎖定的單元格,從而阻止它們復制它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.