Как я могу защитить паролем рабочий лист Excel? - PullRequest
0 голосов
/ 28 апреля 2020

Ciao,

Я использую Open XML .SDK для чтения и создания электронных таблиц.

На самом деле моя цель - создать пустой документ электронной таблицы с защищенным паролем, но я не могу ' найти документацию.

Я публикую свой код:

using System;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

namespace OpenXML.Test
{
    class Program
    {
        static void Main(string[] args)
        {

            using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create($"{Environment.CurrentDirectory}\\exceldocument.zip", SpreadsheetDocumentType.Workbook))
            {
                Console.WriteLine("Generating WorksheetPart (workbook.xml)");
                WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
                workbookPart.Workbook = new Workbook();

                Console.WriteLine("Generating WorksheetPart (Worksheet\\sheet1.xml)");
                WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
                worksheetPart.Worksheet = new Worksheet(new SheetData());

                Console.WriteLine("Adding sheets to Workbook");
                Sheets sheets = spreadsheetDocument
                    .WorkbookPart
                    .Workbook
                    .AppendChild<Sheets>(new Sheets());

                Console.WriteLine("Append new Worksheet and associate it with the workbook");
                Sheet sheet = new Sheet()
                {
                    Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart),
                    SheetId = 1,
                    Name = "Foglio 1"
                };
                sheets.Append(sheet);

                Console.WriteLine("Protecting sheet");
                SheetProtection sheetProtection = new SheetProtection()
                {
                    DeleteRows = true,
                    FormatCells = false,
                    InsertRows = null
                }
                // What should I do?

                Console.WriteLine("Saving...");
                workbookPart.Workbook.Save();
                spreadsheetDocument.Save();
            }
        }
    }
}

Также у меня есть сомнения, свойства SheetProtection имеют тип BooleanValue, который может быть: null, false и true.

  • Почему библиотека использует этот тип?
  • Нулевое состояние, на что оно указывает?
...