Как другие языки программирования, С# имеет множество библиотек, которые работают с пакетами Microsoft Excel. Из них самая развитая — библиотека Gembox. GemBox предлагает возможность работать с MS Word, Excel, Email, PowerPoint и другим ПО. Рассмотрим в качестве примера компонент GemBox.Spreadsheet.
GemBox.Spreadsheet — это компонент .NET, который позволяет вам читать, писать, редактировать, конвертировать и печатать файлы электронных таблиц из ваших приложений .NET с помощью одного простого API. GemBox.Spreadsheet работает в NET Fraemwork 3.0 или выше.
Чтобы воспользоваться бесплатном версиями, надо загрузить из сайта gemboxsoftware.com компонент GemBox.Spreadsheet. В бесплатный версии во время чтения или записи файлов применяются следующие ограничения:
Максимальное количество строк на лист — 150.
Максимальное количество листов на книгу составляет 5.
В следующем примере создается простой файл Excel с использованием кода C #. Он показывает, как инициализировать модель содержимого GemBox.Spreadsheet, заполнить некоторые ячейки, а затем сохранить экземпляр ExcelFile в файл в нужном формате.
static void Main(string[] args)
{
// Установите лицензионный ключ для использования GemBox.Spreadsheet в свободном режиме.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
// Создаем новый пустой файл Excel.
var workbook = new ExcelFile();
// Создаем новый лист и задаем значение ячейки A1 для «Привет мир!».
workbook.Worksheets.Add("GemBox").Cells["A1"].Value = "Привет мир!";
/* Альтернативный варианты кода
ExcelFile workbook = new ExcelFile();
ExcelWorksheet ws = workbook.Worksheets.Add("GemBox");
ws.Cells[0, 0].Value = "Привет, мир!";
*/
// Сохранить в файл XLSX.
workbook.Save("Book1.xlsx");
}
Рис. 1. Скриншот
GemBox.Spreadsheet может читать многие форматы файлов Excel (включая XLS, XLSX, CSV и ODS) таким же образом. В частности, он использует метод Load для чтения из физического файла Excel или потока файла Excel в C #.
Чтение файла Excel в C #.
В следующем примере показано, как читать все ExcelCells, их значение и типы значений, в ExcelFile объекта.
static void Main(string[] args)
{
// Если вы используете Professional, поставьте свой серийный ключ ниже.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
ExcelFile exl = ExcelFile.Load("Spreadsheet.xlsx");
StringBuilder sbstr = new StringBuilder();
// Итерировать все листы в книге Excel.
foreach (ExcelWorksheet sheet in exl.Worksheets)
{
foreach (ExcelRow row in sheet.Rows)
{
sbstr.AppendLine();
// Итерируем через все выделенные ячейки в строке Excel.
foreach (ExcelCell cell in row.AllocatedCells)
{
if (cell.ValueType != CellValueType.Null)
sbstr.Append(string.Format("{0}", cell.Value).PadRight(25));
else
sbstr.Append(new string(' ', 25));
}
}
}
Console.WriteLine(sbstr.ToString());
Запись файла Excel в C #.
GemBox.Spreadsheet может записывать множество форматов файлов Excel (включая XLS, XLSX, CSV и ODS) таким же образом. В частности, он использует метод Save для записи в физический файл Excel или поток файла Excel в C#.
В следующем примере показано, как создавать типичные данные таблицы для объекта ExcelFile, чтобы создать новый файл Excel. Он также показывает, как объединить ячейки, указать свойства столбца и установить значение Cell.
Обратите внимание, что в этом примере создается весь файл Excel с нуля.
static void Main(string[] args)
{
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
ExcelFile ef = new ExcelFile();
ExcelWorksheet ws = ef.Worksheets.Add("GemBox");
//Табличные данные образца для записи в файл Excel.
object[,] datavar = new object[4, 3]
{
{"№", "Страна", "Город"},
{ 1, "Узбекистан", "Бухара"},
{ 2, "Узбекистан", "Самарканд"},
{ 3, "Узбекистан", "Ташкент"}
};
ws.Cells[0, 0].Value = "Это моя родина";
CellRange mergedRange = ws.Cells.GetSubrangeAbsolute(0, 0, 0, 2);
mergedRange.Merged = true;
CellStyle tmpStyle = new CellStyle();
tmpStyle.HorizontalAlignment = HorizontalAlignmentStyle.Center;
tmpStyle.VerticalAlignment = VerticalAlignmentStyle.Center;
tmpStyle.Font.Weight = ExcelFont.BoldWeight;
tmpStyle.WrapText = true;
mergedRange.Style = tmpStyle;
// Ширина столбца 8, 30, 16, 9, 9, 9, 9, 4 и 5 символов.
ws.Columns[0].Width = 8 * 256;
ws.Columns[1].Width = 30 * 256;
ws.Columns[2].Width = 16 * 256;
ws.Columns[3].Width = 9 * 256;
// Запись и форматирование данных образца в ячейки Excel.
for (int i = 1; i < 4; i++)
for (int j = 0; j < 3; j++)
{
ExcelCell cell = ws.Cells[i, j];
cell.Value = datavar[i, j];
}
ef.Save("Writing.xlsx");
}
Рис. 2.
Литературыа:
- В. В. Зиборов. Visual C# 2012 на примерах. — СПб: БХВ-Петербург, 2013. — 480 с.: ил.
- Карли Уотсон, Кристиан Нейгел, Якоб Хаммер Педерсен, Джон Рид, Морган Скиннер. Visual C# 2010: Полный курс.: Пер. с англ. — М.: ООО “И. Д. Вильямс”, 2011. -960 с. ил.