Работа с Excel с помощью C Microsoft office

Автор: | 05.05.2022

Как работать с Excel на C#.

Вот фрагменты кода, которые я когда-то искал для работы с документами Excel.

Разработки очень помогли в работе по обучению отчетности.

В первую очередь необходимо подключить библиотеку Microsoft.Office.Interop.Excel.

Подключение к Microsoft.Office.Interop.ExcelVisual Studio — довольно старая версия. Если у вас новая версия, будет отличаться только внешний вид окна.

Далее создадим псевдоним для работы с Excel:

используя Excel = Microsoft.Office.Interop.Excel;

// Объявление приложения Excel.Application ex = new Microsoft.Office.Interop.Excel.Application (); // Просмотр Excel ex.Visible = true; // Количество листов в книге ex.SheetsInNewWorkbook = 2; // Добавить книгу Excel.Workbook workBook = ex.Workbooks.Add (Type.Missing); // Отключаем отображение окон сообщений ex.DisplayAlerts = false; // Получить первый лист документа (счет начинается с 1) Excel.Worksheet sheet = (Excel.Worksheet) ex.Worksheets.get_Item (1); // Название листа (вкладки внизу) sheet.Name = «Отчет за 13.12.2017»; // Пример заполнения ячеек для (int i = 1; i Расстановка рамок.

Оформляем рамы со всех сторон:

range2.Borders.get_Item (Excel.XlBordersIndex.xlEdgeBottom) .LineStyle = Excel.XlLineStyle.xlContinuous; range2.Borders.get_Item (Excel.XlBordersIndex.xlEdgeRight) .LineStyle = Excel.XlLineStyle.xlContinuous; range2.Borders.get_Item (Excel.XlBordersIndex.xlInsideHorizontal) .LineStyle = Excel.XlLineStyle.xlContinuous; range2.Borders.get_Item (Excel.XlBordersIndex.xlInsideVertical) .LineStyle = Excel.XlLineStyle.xlContinuous; range2.Borders.get_Item (Excel.XlBordersIndex.xlEdgeTop) .LineStyle = Excel.XlLineStyle.xlContinuous;

Цвет границы можно установить так:

range2.Borders.Color = ColorTranslator.ToOle (Color.Red);

Выравнивания диапазонов указываются следующим образом:

rangeDate.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; rangeDate.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

Формулы

Определим задачу: получить сумму диапазона ячеек A4: A10.

Во-первых, давайте снова получим диапазон ячеек:

Excel.Range formulaRange = sheet.get_Range (sheet.Cells [4, 1], sheet.Cells [9, 1]);

Затем мы получаем диапазон формы A4: A10 по адресу ячейки ([4,1]; [9; 1]), описанному выше:

строковый сумматор = formulaRange.get_Address (1, 1, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);

Теперь в переменной сумматора мы сохраняем строковое значение интервала ([4,1]; [9; 1]), то есть A4: A10.

Рассчитаем формулу:

// Ячейка как диапазон Excel.Range r = sheet.Cells [10, 1] как Excel.Range; // Стили r.Font.Name = «Times New Roman»; r.Font.Bold = true; r.Font.Color = ColorTranslator.ToOle (Color.Blue); // Устанавливаем формулу суммы r.Formula = String.Format («= SUM ({0}», adder);

Выделение ячейки или диапазона ячеек

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

sheet.get_Range («J3», «J8»). Активировать (); // или sheet.get_Range («J3», «J8»). Выбирать (); // Вы можете вставить ту же ячейку, тогда будет выбрана ячейка sheet.get_Range («J3», «J3»). Активировать (); sheet.get_Range («J3», «J3»). Выбирать();

Авто ширина и авто высота

Чтобы установить автоматические ширину и высоту для диапазона, используйте следующие команды:

range.EntireColumn.AutoFit (); range.EntireRow.AutoFit();

Получаем значения из ячеек

Чтобы получить значение из ячейки, мы используем следующий код:

// Получить ячейку как ранг Excel.Range forYach = sheet.Cells [ob + 1, 1] as Excel.Range; // Получить значение из ячейки и преобразовать его в строку string yach = forYach.Value2.ToString();

Добавляем лист в рабочую книгу

Чтобы добавить лист и присвоить ему заголовок, используйте следующее:

var sh = workBook.Sheets; Excel.Worksheet sheetPivot = (Excel.Worksheet) sh.Add (Type.Missing, sh [1], Type.Missing, Type.Missing); sheetPivot.Name = «Сводная таблица»;

Добавление разрыва страницы

// Ячейка для разбиения Excel.Range razr = sheet.Cells [n, m] as Excel.Range; // Добавляем горизонтальный разрыв (лист — текущий лист) sheet.HPageBreaks.Add (razr); // VPageBreaks — Добавить вертикальный разрыв

Сохраняем документ

ex.Application.ActiveWorkbook.SaveAs («doc.xlsx», Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type. Отсутствует, Тип. Отсутствует, Тип. Отсутствует);

Как открыть существующий документ Excel

ex.Workbooks.Open (@ «C: \ Users \ Myuser \ Documents \ Excel.xlsx», Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Отсутствующий тип, отсутствующий тип, отсутствующий тип, отсутствующий тип, отсутствующий тип, отсутствующий тип, отсутствующий тип);

Комментарии

При работе с Excel с использованием C# редактор Visual Basic, встроенный в Excel, может оказаться большим подспорьем.

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

Затем войдем в редактор Visual Basic и посмотрим на написанный там код:

Vusial Basic (VBA)

Например:

Sub Macro1 () «Macro1 Macro» Диапазон («E88»). Выберите ActiveSheet.ListObjects.Add (xlSrcRange, Range («$ A $ 1: $ F $ 118») ,, xlYes) .Name = _ «Table1» Range («A1: F118»). Выберите ActiveSheet.ListObjects («Таблица1»). TableStyle = Диапазон «TableStyleLight9» («E18»). Выберите ActiveWindow.SmallScroll Down: = 84 End Sub

Этот макрос записывает все действия, которые мы выполняли во время его записи. Эти методы и свойства можно использовать в коде C.

Этот метод также может помочь в формировании относительных формул, таких как добавление чисел слева от текущей ячейки на 4 столбца и т.д. Пример:

// Добавляем значения предыдущих 12 ячеек к левому рангу.Formula = «= SUM (RC [-12]: RC [-1])»;

Также во время работы может возникнуть ошибка: метод завершился некорректно. Это может означать, что лист для работы не выбран.

Чтобы выбрать лист, выполните sheetData.Select (Type.Missing); где sheetData — это нужный вам лист.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *