粘贴到Excellocking的单元格

我正在为用户input数据创build一个模板。 我希望他们能够做的就是从他们的来源复制他们的数据,并将其放入单元格A21-D21。 一旦粘贴,他们不能删除或改变任何东西,excel只能用于打印。 重新装修是好的,因为这将是一个模板。 理想情况下,用户可以直接导出到这个受保护的工作表中,并完成它,但是仪器软件只需要调用excel而不是特定的数据库位置。

简而言之,用户从乐器中获取数据,并将其保存为无法操作的格式,但除了连接到乐器上的任何一台计算机上都不能显示。 我需要将这些数据放入Excel中,但不能更改。 如果他们select,审核员可以比较原始数据和Excel。

有没有办法保护工作表,并select一个解锁的单元格(格式单元格),A1,然后将A21-D21的整个范围填充/粘贴到?

这个想法是,人们会操纵原始数据来获得他们想要的答案,但这将限制用户只能粘贴。

所以我想,简单地说,我希望find一种方法来允许用户复制/粘贴,这是它! ?

我不知道是否有办法在Excel里面做你想做的,但是可以通过编程来完成。

// Note: need to add reference to Microsoft.Office.Interop.Excel to get these namespaces // In Visual Studio, choose Project > Add Reference > COM > Type Libraries > // Microsoft Excel 16.0 Object Library using Microsoft.Office.Interop.Excel; using System.Collections.Generic; using System.Runtime.InteropServices; namespace ConsoleApp1 { class Program { static void Main(string[] args) { string fileName = @"c:\users\eric.sundquist\desktop\book1.xlsx"; int worksheetNumber = 1; List<string> contents = new List<string> { "1", "2", "3", "4" }; PasteIntoProtectedSheet(fileName, worksheetNumber, contents); } static void PasteIntoProtectedSheet(string fileName, int worksheetNumber, List<string> contents) { Application excel = new Application(); Workbook workbook = excel.Workbooks.Open(fileName); workbook.Sheets[worksheetNumber].Unprotect(); // Can pass in password as parameter if needed Range range = workbook.Sheets[1].Range("A21:D21"); for (int column = 0; column < contents.Count; column++) { range.Cells[1, column + 1] = contents[column]; } workbook.Sheets[worksheetNumber].Protect(); workbook.Save(); workbook.Close(); Marshal.ReleaseComObject(range); Marshal.ReleaseComObject(workbook); Marshal.ReleaseComObject(excel); } } }