使用 OfficeOpenXml 合并 excel 中的单元格
Merge cells in excel using OfficeOpenXml
我正在通过 x++
使用 OfficeOpenXml
Api 创建一个 excel 文档,但我不知道如何合并单元格(特别是列)。我已经找到了如何使用 COM 来完成它,有一种方法可以使用提到的 Api?
如果使用 Merge cells using EPPlus? 中的解决方案,则会显示 Invalid token '.'.
编译器错误:
CustTableWorksheet.Cells["B1:D1"].Merge = true;
在 x++ 中使用 .NET 库有时会很棘手,这就是为什么有关于差异的文档:.NET Interop from X++
(X++ and C# comparison 也可能感兴趣)。
查看其他示例如何在 x++, e.g. in class CustCollectionsExcelStatement
, I noticed that instead of the Cells["address"]
syntax to determine a cell range, method get_Item
is used instead. This is because .NET arrays have restricted support in x++ (see How to: Use X++ Syntax for CLR Arrays 中使用 EEPlus 库以获取更多信息)。
所以我将语句重写为
CustTableWorksheet.get_Item("B1:D1").Merge = true;
不幸的是,这会导致其他编译器错误。经过进一步的试验和错误后,我得到了以下结果:
ExcelRange cells = worksheet.Cells.get_Item("B1:D1");
cells.Merge = true;
我没有这方面的来源,但我认为这是因为链接 .NET 对象的多个表达式会导致 x++ 出现问题。
这是我的完整测试示例代码:
using OfficeOpenXml;
class CreateExcelWithMergedCells
{
public static void main(Args _args)
{
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
using (var package = new ExcelPackage(stream))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add('Merged cells');
ExcelRange cell = worksheet.Cells.get_Item('B1');
cell.Value = 'Hello World';
ExcelRange cells = worksheet.Cells.get_Item('B1:D1');
cells.Merge = true;
package.Save();
}
File::SendFileToUser(stream, 'Merged cells demo.xlsx');
}
}
}
这就是生成的 Excel 文件的样子:
我正在通过 x++
使用 OfficeOpenXml
Api 创建一个 excel 文档,但我不知道如何合并单元格(特别是列)。我已经找到了如何使用 COM 来完成它,有一种方法可以使用提到的 Api?
如果使用 Merge cells using EPPlus? 中的解决方案,则会显示 Invalid token '.'.
编译器错误:
CustTableWorksheet.Cells["B1:D1"].Merge = true;
在 x++ 中使用 .NET 库有时会很棘手,这就是为什么有关于差异的文档:.NET Interop from X++ (X++ and C# comparison 也可能感兴趣)。
查看其他示例如何在 x++, e.g. in class CustCollectionsExcelStatement
, I noticed that instead of the Cells["address"]
syntax to determine a cell range, method get_Item
is used instead. This is because .NET arrays have restricted support in x++ (see How to: Use X++ Syntax for CLR Arrays 中使用 EEPlus 库以获取更多信息)。
所以我将语句重写为
CustTableWorksheet.get_Item("B1:D1").Merge = true;
不幸的是,这会导致其他编译器错误。经过进一步的试验和错误后,我得到了以下结果:
ExcelRange cells = worksheet.Cells.get_Item("B1:D1");
cells.Merge = true;
我没有这方面的来源,但我认为这是因为链接 .NET 对象的多个表达式会导致 x++ 出现问题。
这是我的完整测试示例代码:
using OfficeOpenXml;
class CreateExcelWithMergedCells
{
public static void main(Args _args)
{
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
using (var package = new ExcelPackage(stream))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add('Merged cells');
ExcelRange cell = worksheet.Cells.get_Item('B1');
cell.Value = 'Hello World';
ExcelRange cells = worksheet.Cells.get_Item('B1:D1');
cells.Merge = true;
package.Save();
}
File::SendFileToUser(stream, 'Merged cells demo.xlsx');
}
}
}
这就是生成的 Excel 文件的样子: