Создание документа Excel с OpenXml sdk 2.0

Возможно защитить приложение.

Каждый раз, когда кто-то задает вопрос о том, как запретить пользователям пиратское приложение или защитить его от хакеров, ответ заключается в том, что это невозможно. Ерунда. Если вы действительно в это верите, оставьте свои двери незапертыми (или просто уберите их из дома!). И не надо идти к врачу. Вы смертны - попытка вылечить болезнь просто откладывает неизбежное.

Тот факт, что кто-то может иметь возможность подделать ваше приложение или взломать вашу систему, не означает, что вам не следует пытаться сократить количество людей, которые будут это делать. Что вы на самом деле делаете, так это заставляете его требовать больше работы, чем злоумышленник / пират готов сделать.

Точно так же, как засов и ADT в вашем доме будут держать грабителей, разумные меры по борьбе с пиратством и безопасностью будут держать хакеров и пиратов подальше от вас. Конечно, чем более заманчиво было бы взломать их, тем больше вам нужно безопасности.

16
задан Cœur 18 March 2017 в 08:47
поделиться

2 ответа

Примечание: OpenXML 2.0 SDK в настоящее время находится в CTP и не лицензирован для производственного использования до Office2010.

Моя общая методика работы с OpenXML SDK заключается в создании пустого документа и документа с теми функциями, которые вы хотели бы узнать, как реализовать (например, цвет фона), и использование OpenXmlDiff SDK, чтобы увидеть, какие изменения необходимо внести. сделано для реализации этой функции.

Если вы создаете документ с нуля, вы можете использовать DocumentReflector, чтобы сгенерировать код для объекта таблицы стилей по умолчанию, а затем добавить нужные стили.

Начиная со значения по умолчанию:

new Stylesheet(
new Fonts(
    new Font(
        new FontSize() { Val = 10D },
        new Color() { Theme = (UInt32Value)1U },
        new FontName() { Val = "Arial" },
        new FontFamilyNumbering() { Val = 2 })
) { Count = (UInt32Value)1U },
new Fills(
    new Fill(
        new PatternFill() { PatternType = PatternValues.None }),
    new Fill(
        new PatternFill() { PatternType = PatternValues.Gray125 })
) { Count = (UInt32Value)2U },
new Borders(...
...
...
new CellFormats(
new CellFormat() { NumberFormatId = (UInt32Value)0U, FontId = (UInt32Value)0U, FillId = (UInt32Value)0U, BorderId = (UInt32Value)0U, FormatId = (UInt32Value)0U }) { Count = (UInt32Value)1U }, ...

Я добавил новый Шрифт размером 12 и новая заливка с красным фоном (индексированное значение 64), а также добавлены новые форматы ячеек, которые ссылаются на индекс нового шрифта и заливки. (В ячейках A2 и A3 уже были данные. Ячейка A2 получает больший размер, A3 получает красный фон)

SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
sheetData.Descendants<Row>().Where(r => r.RowIndex == 2U).First().Descendants<Cell>().First().StyleIndex = 1U;
sheetData.Descendants<Row>().Where(r => r.RowIndex == 3U).First().Descendants<Cell>().First().StyleIndex = 2U;
19
ответ дан 30 November 2019 в 17:39
поделиться

Как указать стиль ячейки?

new Cell() { CellReference = "B6", StyleIndex = 11U }

Здесь «11U» представляет собой отсчитываемый от нуля индекс StylesPart.Stylesheet.CellFormats, в котором каждый CellFormat определяет комбинацию NumberFormat, Font, Fill и стили границ.

Вам не нужно добавлять все стили по программе, вместо этого вы можете создать файл шаблона xlsx со всеми необходимыми вам форматами, а затем указать индекс стиля в своей программе.

2
ответ дан 30 November 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: