В данной публикации приведен пример генерации Excel файла при помощи библиотеки OpenXML.
Отличие этой библиотеки OpenXML от Microsoft.Office.Interop.Excel в быстродействии которое на порядок выше.
Для работы с Excel документами необходимо установить расширение DocumentFormat.OpenXML из Nuget, оно позволит создавать Excel документы для версии Microsoft Office не ниже 2010.
Так-же для работы нам понадобится добавить в проект стандартную библиотеку WindowsBase, просто через Add References, без нее приложение не скомпилируется.
Ниже я приведу пример того, с чем работал сам, первоначальный вариант примера был найден где-то на просторах англоязычного интернета, переработан и теперь выглядит так — как выглядит, с моими комментариями и правками.
Пример демонстрирует формирование маленького Excel файла, который содержит тестовый текст в различных ячейках с применением разных стилей, как на изображении ниже:
Исходный код примера консольного приложения формирующего Excel на изображении выше:
В данной публикации приведен пример получения информации по пользователю в домене AD с использованием C#.
Для того чтобы всё заработало необходимо подключить библиотеку:
using System.DirectoryServices.AccountManagement;
Затем можно получать параметры по пользователю.
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
var loginName = HttpContext.User.Identity.Name.ToString();
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, loginName);
if (user != null)
{
// Получаем SID пользователя
var userSid = user.Sid;
// Получаем EMail пользователя
var userEmail = user.EmailAddress;
// Получаем Количество неудачных попыток входа пользователя
var userBadLogons = user.BadLogonCount;
// ФИО пользователя ( отображаемое имя)
var userName = user.DisplayName;
// Системное имя (по сути логин)
var userSamAccountName = user.SamAccountName;
var userFullName = String.Format("{0} {1} {2}", userName, userSamAccountName, userBadLogons);
ViewBag.Message = userFullName;
}
Функция ADDDATE возвращает переданное в нее время определяемое первым параметром, с добавленным временным интервалом, который определяется вторым параметром.
Синтаксис:
ADDDATE(date, INTERVAL expr type)
У функции ADDDATE() существует синоним DATE_ADD().
Второй параметр в функции начинается ключевым словом INTERVAL, после которого следует значение и тип
этого значения.
Функция, также, допускает использование и отрицательных значений, при этом период не прибавляется а отнимается.
! Есть упрощённый формат записи функции ADDDATE(date,days) — где days — дни.
В данной публикации будут рассмотрены некоторые функции необратимого шифрования применяемые в СУБД MySQL.
Функция MD5() — производит необратимое шифрование входящих данных по алгоритму MD5 (Message-Digest Algoritm).
Функция принимает на вход строку и возвращает 128-битную контрольную сумму, вычисляемую по алгоритму MD5. Возвращаемое значение — это 32-разрядное шестнадцатиричное число, уникальное для каждой строки. Если строки отличаются хотя бы одним символом, то результат выполнения функции MD5() для этих строк будет разный, для двух одинаковых строк — результат будет всегда одинаков.
Функции AES_ENCRYPT() и AES_DECRYPT() производят симметричную шифровку и дешифровку данных с использованием алгоритма AES (Advanced Encryption Standard), при этом используется кодирование с 128-битным ключом. Есть возможность расширить до 256-бит, но как стандарт в MySQL выбран 128-битный, как достаточный по надёжности и более быстрый.
Синтаксис функций:
AES_ENCRYPT('Шифруемая строка','Ключ');
AES_DECRYPT('Дешифруемая строка','Ключ');
--Входные параметры AES_ENCRYPT() могут быть любой длины.
--Если любой из входных параметров равен NULL - то и результат выполнения тоже будет NULL.
--Ключ в AES_DECRYPT() должен совпадать с ключом в AES_ENCRYPT().
Приведем рабочий пример работы с функциями:
В данной публикации я расскажу каким образом в отчёт Crystal Report можно вывести требуемое количество изображений (например из базы данных).
!!! Для того чтобы публикация была понятна, рекомендуется к обязательному прочтению предыдущая статья Используем Crystal Report в C#.
Собственно, перепробовав много методов (в основном описанных на зарубежных сайтах — в Ру-нете как то не особо изучен этот вопрос), нашёл действительно работоспособный и эффективный метод вывода изображений в отчёт Crystal Report, который заключается в передаче изображений в отчёт через источник данных.
Пришло время написать вторую публикацию по программированию считывающих устройств терминалов сбора данных. В этой публикации я приведу пример программирования лазерного считывателя на терминалах Cipher 9300.
Здесь я приведу простой пример создания программы на Windows CE, которая будет работать со считывателем на терминалах Cipher 93XX. В целом, исходный код данной программы будет основан на примерах, которые приведены в руководстве по программированию, но с небольшим своим усовершенствованием. Вообще удивительно, почему те кто составлял руководство и SDK для разработчиков к этому устройству, не озаботились выложить хотя бы парочку рабочих примеров.
Итак, по порядку. Начнём с того что нам потребуется для разработки.
Как я уже говорил, нам потребуется SDK, по сути нам будут нужны 3 библиотеки, две под .NET, и одна для считывателя которая просто должна быть с проектом: Reader_Ce_Net.DLL, SystemApi_Ce_Net.DLL, ReaderDll_CE.dll.
Данный пример приведён в целом для самого себя, чтобы не забыть. Код демонстрирует изменение цвета строки выводимой в поле в зависимости от значения.
Код формулы:
if {@delta_c}<0 Then
crRed
else
crBlack
В этой статье я приведу пример создания и использования отчёта Crystal Reports в Visual Studio.
Приведённый пример — это реально рабочий проект по подготовке к печати билетов на обычном лазерном принтере.
Начнём с того что нам потребуется источник данных поэтому вначале создадим проект в котором будем использовать наш отчёт и создадим источник данных который выгрузим в XML файл, для более простого и наглядного создания нового отчёта и его настройки.
Здесь речь пойдёт об основных способах приведения типов в MySQL. Заранее следует оговорить тот момент, что в большинстве случаев приведение типов в MySQL сработает автоматически, например:
//Выполнив запрос:
select 1+'1';
//Получим результат: 2
Однако в ряде случаев требуется специальное приведение типов, о них и пойдёт речь далее.
Случай первый — Сравнение строк (ключевое слово BINARY)
В СУБД MySQL сравнение тестовых строк не зависит от регистра сравниваемых строк. Например, если мы будем сравнивать строки «Чупакабра крут» и «ЧУПАКАБРА КРУТ», то MySQL сочтёт их идентичными.