Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Дополнительной сложностью при работе с взаимодействием с СОМ и .NET 5 является отсутствие поддержки на этапе компиляции и во время выполнения. Версия MSBuild в .NET 5 не способна распознавать библиотеки взаимодействия, поэтому проекты .NET Core, в которых задействовано взаимодействие с СОМ, не могут компилироваться с применением интерфейса командной строки .NET Core. Они должны компилироваться с использованием Visual Studio, и скомпилированный исполняющий файл можно будет запускать вполне ожидаемым способом.
Взаимодействие с СОМ с использованием динамических данных C#
Чтобы продемонстрировать, каким образом необязательные аргументы, именованные аргументы и ключевое слово
dynamic
Car.cs
namespace ExportDataToOfficeApp
{
public class Car
{
public string Make { get; set; }
public string Color { get; set; }
public string PetName { get; set; }
}
}
Поместите в начало файла
Program.cs
using
using System;
using System.Collections.Generic;
using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;
using ExportDataToOfficeApp;
Обратите внимание на псевдоним
Excel
Microsoft.Office.Interop.Excel
Далее создайте список записей
Car
Program.cs
// Создать псевдоним для объектной модели Excel.
using Excel = Microsoft.Office.Interop.Excel;
Next, create a list of Car records in the top-level statements in Program.cs:
List<Car> carsInStock = new List<Car>
{
new Car {Color="Green", Make="VW", PetName="Mary"},
new Car {Color="Red", Make="Saab", PetName="Mel"},
new Car {Color="Black", Make="Ford", PetName="Hank"},
new Car {Color="Yellow", Make="BMW", PetName="Davie"}
}
Поскольку вы импортировали библиотеку СОМ с использованием Visual Studio, сборка PIA автоматически сконфигурирована так, что используемые метаданные будут встраиваться в приложение .NET Core. Таким образом, все типы данных
Variant
dynamic
ExportToExcel()
void ExportToExcel(List<Car> carsInStock)
{
<b> // Загрузить Excel и затем создать новую пустую рабочую книгу.</b>
Excel.Application excelApp = new Excel.Application();
excelApp.Workbooks.Add();
<b> // В этом примере используется единственный рабочий лист.</b>
Excel._Worksheet workSheet = (Excel._Worksheet)excelApp.ActiveSheet;
<b> // Установить заголовки столбцов в ячейках.</b>
workSheet.Cells[1, "A"] = "Make";
workSheet.Cells[1, "B"] = "Color";
workSheet.Cells[1, "C"] = "Pet Name";
<b> // Сопоставить все данные из List<Car> с ячейками электронной таблицы.</b>
int row = 1;
foreach (Car c in carsInStock)
{
row++;
workSheet.Cells[row, "A"] = c.Make;
workSheet.Cells[row, "B"] = c.Color;
workSheet.Cells[row, "C"] = c.PetName;
}
<b> // Придать симпатичный вид табличным данным.</b>
workSheet.Range["A1"].AutoFormat
(Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic2);
<b> // Сохранить файл, завершить работу Excel и отобразить сообщение пользователю.</b>
workSheet.SaveAs($@"{Environment.CurrentDirectory}Inventory.xlsx");
excelApp.Quit();
Console.WriteLine("The Inventory.xslx file has been saved to your app folder");
// Файл Inventory.xslx сохранен в папке приложения.
}
Метод
ExportToExcel()
Excel
Excel
Excel