Создать объединенные ячейки Excel без стороннего компонента? - PullRequest
0 голосов
/ 05 августа 2020

Как заголовок. Я разрабатываю веб-сайт с другими программистами. Я отвечаю за функцию создания файла Excel для отображения некоторых отчетов с фиксированными макетами на листах в файле Excel шаблона. Могу ли я сделать это с помощью OLE DB или любым другим способом без сторонних компонентов, таких как Spire.XLS? Не потому, что я их ненавижу, но по какой-то причине я должен соответствовать правилу менеджера.

Как на картинке, можно ли объединить ячейки таким образом? Я хочу объединить несколько ячеек и написать в них текст. Но я искал, используя ключевые слова «C# oledb merge cells xlsx», результаты, которые я получаю, касаются того, как получить значение или как объединить по компонентам .... Образец объединенных ячеек

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Найдите «C# объектная модель Excel» (с использованием основных сборок взаимодействия) + «как экспортировать», например, https://www.c-sharpcorner.com/UploadFile/deveshomar/exporting-datatable-to-excel-in-C-Sharp-using-interop/

После того, как вы выполнили эти шаги и чтобы он работал, создайте макрос в Excel, который записывает действие преобразования 3 ячеек в 1 объединенную ячейку. Используйте это как основу, чтобы написать то же самое в коде C#, например VBA:

Range("A1:A3").Select
Range("A3").Activate
With Selection
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlBottom
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = True
End With

C#:

workSheet.Range[workSheet.Cells[1, 1], workSheet.Cells[3, 1]].Merge();

Существует несколько альтернатив объектной модели Excel (с использованием PIA) , например Open или Closed XML или даже HTML . В зависимости от размера наборов данных и необходимости форматирования (ie не обычный текст) вы можете выбрать последнее.

0 голосов
/ 05 августа 2020

Во-первых, вы можете установить nuget-package Microsoft.Office.Interop.Excel в Visual Studio.

Во-вторых, вот пример кода, на который вы можете ссылаться.

            using Excel = Microsoft.Office.Interop.Excel;
            Excel.Application app = new Excel.Application();
            app.DisplayAlerts = false;
            Excel.Workbook workbook = app.Workbooks.Open("D:\\2.XLSX");
            Excel.Worksheet worksheet = workbook.ActiveSheet;
            Excel.Range range = worksheet.Range["A1","A3"];
            range.HorizontalAlignment= Excel.XlHAlign.xlHAlignCenter;
            range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
            range.Value2 = "Name/ID";
            range.Select();
            range.Merge();
            workbook.Save();

Первоначальный excel:

enter image description here

Modified excel:

введите описание изображения здесь

...