簡體   English   中英

如何使用C#代碼為Excel中的所有單元格禁用剪切/復制選項?

[英]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具有類型FalsexlCutxlCopy [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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM