Как поставить защиту рабочего листа на C# и .NET

Работа с электронными таблицами Excel — важная часть автоматизации бизнес-процессов, анализа данных и составления отчётности. Однако при обмене данными или хранении конфиденциальной информации возникает необходимость в защите листов или всей рабочей книги. Механизмы безопасности позволяют предотвратить несанкционированное изменение содержимого, сохранить конфиденциальность и обеспечить контроль доступа.

Если вы разрабатываете на платформе Excel. Если вы хотите программно обеспечить безопасность документов Excel, одним из решений является использование библиотеки SautinSoft.Excel — мощного инструмента для автоматизации работы с файлами Excel. В этой статье мы подробно расскажем, как использовать её для защиты отдельного листа, каковы преимущества такого подхода, зачем он нужен и насколько популярен этот подход в разработке.

Преимущества и практическая польза:

  • Обеспечение конфиденциальности данных. Защита личных, корпоративных или секретных данных от случайных или злонамеренных изменений.
  • Контроль доступа. Ограничьте возможность редактирования, оставив возможность только чтения содержимого, что особенно важно при создании общедоступных отчётов или информационных панелей.
  • Автоматизация безопасности. Управляйте защитой листов программно, без необходимости ручной настройки в Excel, что особенно важно в автоматизированных системах и серверных решениях.
  • Повышение профессионализма приложения. Наличие уровня защиты делает ваше приложение более полным, надежным и соответствующим стандартам безопасности.

Практические примеры использования:

  • Автоматическое формирование защищенных отчетов для руководства.
  • Массовая обработка файлов с конфиденциальной информацией.
  • Создание защищенных шаблонов документации.
  • Обеспечение безопасности при обмене файлами через внутренние системы.

Практика показывает, что защита листов — одна из самых востребованных функций при работе с автоматизированными системами отчетности и документооборота. В корпоративной среде программисты регулярно внедряют подобные механизмы для защиты шаблонов и форм, предотвращения случайных ошибок в документах, обеспечения конфиденциальности данных и автоматизации процессов формирования защищенных файлов. Подобные решения широко используются в банковском, страховом и государственном секторах, а также в любой сфере, где важны информационная безопасность и контроль доступа.

Что касается этого примера кода, стоит отметить, что для предотвращения случайного или преднамеренного изменения, перемещения или удаления данных на листе другими пользователями вы можете заблокировать ячейки в листе Excel и защитить лист.

Предположим, у вас есть лист отчёта о состоянии команды, и вы хотите, чтобы участники команды добавляли данные только в определённые ячейки и не могли редактировать ничего другого.

Защита листа позволяет сделать редактируемыми только определённые части листа, запрещая пользователям редактировать данные в других областях листа.

Полный код

using SautinSoft.Excel;
using System.IO;

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get your free key here:   
            // https://sautinsoft.com/start-for-free/

            ProtectWorksheet();
        }

        /// <summary>
        /// Protect worksheet in the file without passwords.
        /// </summary>
		/// <remarks>
        /// Details: 
        /// </remarks>
        static void ProtectWorksheet()
        {
            string inpFile = @"..\..\..\Example.xlsx";
            string outFile = @"..\..\..\Result.xlsx";

            ExcelDocument excelDocument = ExcelDocument.Load(inpFile);
            // To prevent other users from accidentally or deliberately changing, moving, or deleting data in a worksheet, you can lock the cells on your Excel worksheet and then protect the sheet with a password.
            // Say you own the team status report worksheet, where you want team members to add data in specific cells only and not be able to modify anything else.
            // With worksheet protection, you can make only certain parts of the sheet editable and users will not be able to modify data in any other region in the sheet. 

            excelDocument.Worksheets[0].Protected = true;

            // Using MS Excel just click on File-> Info-> Unprotect.
            excelDocument.Save(outFile);

            // Important for Linux: Install MS Fonts
            // sudo apt install ttf-mscorefonts-installer -y

            // Open the result for demonstration purposes.
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(outFile) { UseShellExecute = true });
        }
    }
}

Download

Imports SautinSoft.Excel
Imports System.IO

Namespace Example
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Get your free key here:   
			' https://sautinsoft.com/start-for-free/

			ProtectWorksheet()
		End Sub

		''' <summary>
		''' Protect worksheet in the file without passwords.
		''' </summary>
		''' <remarks>
		''' Details: 
		''' </remarks>
		Private Shared Sub ProtectWorksheet()
			Dim inpFile As String = "..\..\..\Example.xlsx"
			Dim outFile As String = "..\..\..\Result.xlsx"

			Dim excelDocument As ExcelDocument = ExcelDocument.Load(inpFile)
			' To prevent other users from accidentally or deliberately changing, moving, or deleting data in a worksheet, you can lock the cells on your Excel worksheet and then protect the sheet with a password.
            ' Say you own the team status report worksheet, where you want team members to add data in specific cells only and not be able to modify anything else.
            ' With worksheet protection, you can make only certain parts of the sheet editable and users will not be able to modify data in any other region in the sheet. 
			excelDocument.Worksheets(0).Protected = True
			' Using MS Excel just click on File-> Info-> Unprotect.
			excelDocument.Save(outFile)

			' Important for Linux: Install MS Fonts
			' sudo apt install ttf-mscorefonts-installer -y

			' Open the result for demonstration purposes.
			System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(outFile) With {.UseShellExecute = True})
		End Sub
	End Class
End Namespace

Download


Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.ru или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:



Вопросы и предложения всегда приветствуются!

Мы разрабатываем компоненты .Net с 2002 года. Мы знаем форматы PDF, DOCX, RTF, HTML, XLSX и Images. Если вам нужна помощь в создании, изменении или преобразовании документов в различных форматах, мы можем вам помочь. Мы напишем для вас любой пример кода абсолютно бесплатно.