2017-01-23 3 views
3

Ich erstelle eine Vorlage für Benutzer, um Daten einzugeben. Ich will nur, dass sie ihre Daten von ihrer Quelle kopieren und in die Zellen A21-D21 legen. Nach dem Einfügen können sie nichts löschen oder ändern, Excel wird nur zum Drucken verwendet. Repasting ist in Ordnung, da dies eine Vorlage sein wird. Idealerweise würden Benutzer direkt in dieses geschützte Arbeitsblatt exportieren und damit fertig sein, aber die Gerätesoftware verlangt lediglich, dass kein spezieller Datenbankspeicherort vorhanden ist.In Excel-gesperrte Zellen einfügen

Kurz gesagt, Benutzer erhalten Daten von einem Instrument und es ist in einem Format gespeichert, dass es nicht manipuliert werden kann, aber es kann auch auf keinem Computer angezeigt werden außer, was mit dem Instrument verbunden ist. Ich brauche diese Daten in Excel, aber kann nicht geändert werden. Prüfer können die Rohdaten mit dem Excel vergleichen, wenn sie dies wünschen.

Gibt es eine Möglichkeit, Arbeitsblatt geschützt zu haben und wählen Sie die eine freigeschaltete Zelle (Format Zelle), A1, und dann den gesamten Bereich von A21-D21 gefüllt/eingefügt?

Das Denken ist, dass Leute die rohen Daten manipulieren werden, um die Antworten zu erhalten, die sie wünschen, aber das beschränkt den Benutzer, nur einzufügen.

Also ich denke, einfach, ich hoffe, einen Weg zu finden, um Benutzern das Kopieren/Einfügen und das ist es! ?

Antwort

0

Ich weiß nicht, ob es eine Möglichkeit gibt, was Sie in Excel machen wollen, aber es kann programmatisch gemacht werden.

// 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); 
     } 
    } 
} 
Verwandte Themen