C# - Excel Экспорт
Добавление необходимых ссылок в решение
Работа с объектом Application (Excel)
Создание рабочей книги Excel в C#
Работа с листами Excel в C#. Hello Excel
Вывод нескольких значений
Вывод диаграмм
C# Импорт из Excel
Начало работы
Настройка формы
Метод, получающий данные из Excel
Код кнопки button2
Результат выполнения программы
239.88K
Category: programmingprogramming

C# - Excel Экспорт

1. C# - Excel Экспорт

Лекция 2

2. Добавление необходимых ссылок в решение

Для подключения в решение библиотек для
взаимодействия с Microsoft Excel необходимо
добавить добавьте следующие ссылки:
• Microsoft Excel Х.0 Object Library
• Microsoft Office Х.0 Object Library
В Visual Studio это делается следующим образом:

3.

1. В «Обозревателе
решений» кликаем
правой кнопкой мыши
по строке
«Зависимости» или
«Ссылки» (в
зависимости от версии
VS)
Выбираем
«Добавить ссылку»

4.

2. В открывшемся окне в строке поиска набираем
«Microsoft», выбираем необходимые ссылки, то есть
Microsoft Excel Х.0 Object Library и Microsoft Office Х.0
Object Library и нажимаем «Ok»:

5.

После этого, в обозревателе решений для нашего
проекта в зависимостях появятся следующие ссылки:

6. Работа с объектом Application (Excel)

Объект Application представляет всё приложение
Microsoft Excel. С помощью этого объекта в C# мы
можем запускать и останавливать работу Excel,
получать доступ к рабочим книгам Excel.
Запуск и остановка Microsoft Excel в C#
Чтобы продемонстрировать запуск и остановку Excel
в C# подключим в наше решение пространство
имен Microsoft.Office.Interop.Excel, используя
псевдоним:
using Excel = Microsoft.Office.Interop.Excel;

7.

Excel.Application application = new Excel.Application();
//Объект Excel.Application создан
application.Visible = true;
//Окно Excel видно пользователю
//Закрываем Excel
application.Quit();
Marshal.ReleaseComObject(application);
(Объект Marshal.ReleaseComObject(application)
находится в пространстве имен
System.Runtime.InteropServices)

8. Создание рабочей книги Excel в C#

Следующий пример демонстрирует создание
новой рабочей книги Excel в C#:
//Объявляем переменную приложения Excel
Excel.Application application = null;
//объявляем переменные для коллекции рабочих
книг и одной рабочей книги
Excel.Workbooks workbooks = null;
Excel.Workbook workbook = null;

9.

try
{
//создаем объект Application
application = new Excel.Application();
//показываем окно Excel пользователю
application.Visible = true;
//получаем ссылку на коллекцию рабочих книг
workbooks = application.Workbooks;
//добавляем новую рабочую книгу в коллекцию
workbook = workbooks.Add();
//Закрываем Excel
application.Quit();
}

10.

finally
{
//освобождаем память, занятую объектами
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(application);
}
Необходимо обеспечить гарантированное
освобождение всех объектов COM перед
завершением процесса, поэтому всю работу
необходимо вести в блоке try…finally

11. Работа с листами Excel в C#. Hello Excel

В следующем примере демонстрируется то, как
получить доступ к первому листу рабочей книги и
записи в ячейку A1 строки «Hello Excel».
Поместим код к ранее объявленным переменным
приложения и книг.
Excel.Sheets worksheets = null;
Excel.Worksheet worksheet = null;
//переменная для хранения диапазона ячеек
//в нашем случае - это будет одна ячейка
Excel.Range cell = null;

12.

Часть try перепишется следующим образом:
try
{ application = new Excel.Application();
application.Visible = true
workbooks = application.Workbooks;
workbook = workbooks.Add();
//получаем доступ к коллекции рабочих листов
worksheets = workbook.Worksheets;
//получаем доступ к первому листу
worksheet = worksheets.Item[1];
//получаем доступ к ячейке
cell = worksheet.Cells[1, 1];
//пишем строку в ячейку A1
cell.Value = "Hello Excel"; application.Quit();
}

13.

finally
{
//освобождаем память, занятую объектами
Marshal.ReleaseComObject(cell);
Marshal.ReleaseComObject(worksheet);
Marshal.ReleaseComObject(worksheets);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(application);
}

14. Вывод нескольких значений

Пусть имеется массив значений из 50-ти чисел:
int n = 50;
double[] Y = new double[n];
for (int i = 0; i < n; i++)
Y[i] = 1 - Math.Exp(-i / 10.0);
Запишем их в Excel:
for (int i = 0; i < n; i++)
{
cell = worksheet.Cells[i+1, 1];
cell.Value = Y[i];
}

15. Вывод диаграмм

Построим по числам из массива линейный график.
cell = worksheet.Cells[1, 4];
cell.Formula = "Результат";
// Настраиваем линейный график через интерфейсы
//ChartObjects, ChartObject, Chart, Range
Excel.ChartObjects chartObjs =
(Excel.ChartObjects)worksheet.ChartObjects();
Excel.ChartObject chartObj = chartObjs.Add(70, 30, 300,
200);
Excel.Chart xlChart = chartObj.Chart;

16.

//Формируем строку – диапазон для построения
диаграммы
string sRange = "A1:A" + n.ToString();
// Передаем строку в диапазон
Excel.Range rng2 = worksheet.Range[sRange];
// Устанавливаем тип диаграммы
xlChart.ChartType = Excel.XlChartType.xlLineStacked;
// тип графика - линейный
// Устанавливаем источник данных (значения из
//первого столбца)
xlChart.SetSourceData(rng2);

17.

Результат выполнения программы:

18. C# Импорт из Excel

Лекция 3

19. Начало работы

Для осуществления импорта данных из Excel,
необходимо подключить в проект библиотеки
для взаимодействия с Microsoft Excel (см.
лекцию «C# - Excel Экспорт».
Рассмотрим на примере задачи:
Пусть в таблице Excel имеются данные,
расположенные на первом листе. Они
занимают
не
более
5
колонок
и
неограниченное количество строк. Требуется
перенести эти данные на форму проекта C# в
элемент listBox.

20. Настройка формы

• Для запуска импорта данных поместим на
форму элемент button2,
• для выбора имени файла данных — элемент
OpenFileDialog1,
• для отображения данных — элемент listBox1
В классе формы создадим массив для
загрузки данных из Excel.
string[,] list = new string[50, 5];

21. Метод, получающий данные из Excel

int ExportExcel()
{
// Выбрать путь и имя файла в диалоговом окне
OpenFileDialog ofd = new OpenFileDialog();
// Задаем расширение имени файла по умолчанию
ofd.DefaultExt = "*.xls;*.xlsx";
// Задаем строку фильтра имен файлов
ofd.Filter = "файл Excel (Spisok.xlsx)|*.xlsx";
// Задаем заголовок диалогового окна
ofd.Title = "Выберите файл базы данных";
// если файл БД не выбран -> Выход
if (!(ofd.ShowDialog() == DialogResult.OK)) return 0;

22.

//создаем объект Application
Excel.Application application = new Excel.Application();
//создаем объект книги из выбранного файла
Excel.Workbook workbook =
application.Workbooks.Open(ofd.FileName);
//получаем 1-й лист
Excel.Worksheet worksheet =
(Excel.Worksheet)workbook.Sheets[1];

23.

//получаем последнюю ячейку
var lastCell = worksheet.Cells.SpecialCells
(Excel.XlCellType.xlCellTypeLastCell);
// определяем количество столбцов
int lastColumn = (int)lastCell.Column;
// определяем количество строк
int lastRow = (int)lastCell.Row;

24.

// Перенос в промежуточный массив класса Form1
//по всем колонкам
for (int j = 0; j < lastColumn; j++)
// по всем строкам
for (int i = 0; i < lastRow; i++)
//считываем данные
list[i, j] = worksheet.Cells[i + 1, j + 1].Text.ToString();

25.

//закрыть не сохраняя
workbook.Close(false, Type.Missing, Type.Missing);
// выйти из Excel
application.Quit();
// сборка муссора. GC класс. Пространство
//имен:System
GC.Collect();
// возвращаем количество строк
return lastRow;
}// конец метода ExportExcel()

26. Код кнопки button2

int n = ExportExcel();
listBox1.Items.Clear();
string s;
for (int i = 0; i < n; i++) // по всем строкам
{
s = "";
for (int j = 0; j < 5; j++) //по всем колонкам
s += " | " +list[i, j];
listBox1.Items.Add(s);
}

27. Результат выполнения программы

English     Русский Rules