有没有一种方法可以将 System.Data.DataTable 加载到 LibreOffice Calc 工作表中,而无需逐个单元格地进行操作?

问题描述 投票:0回答:1

使用 Excel 并使用 C#,您可以通过调用将整个 System.Data.Datatable 加载到工作表中

mySheet.Cells("A1").LoadFromDataTable(myDataTable, True)

其中 mySheet 是 OfficeOpenXml.ExcelWorksheet 对象。

我想知道是否有类似的东西 unoidl.com.sun.star.sheet.XSpreadsheet 和 LibreOffice Calc

我检查了 unoidl.com.sun.star.sheet.XSpreadsheet 类的可用方法,但找不到任何东西。但也许有一种比逐个单元格更好、更快的方法来使用 DataTable 对象中的数据填充 LibreOffice Calc 工作表

c# libreoffice-calc uno
1个回答
0
投票

使用

setDataArray
插入二维数组。 开发人员指南显示了 Java 中的示例。

// --- Cell range data ---
com.sun.star.sheet.XCellRangeData xData = (com.sun.star.sheet.XCellRangeData)
    UnoRuntime.queryInterface(com.sun.star.sheet.XCellRangeData.class, xCellRange);

Object[][] aValues =
{
    {new Double(1.1), Integer.valueOf(10)},
    {new Double(2.2), ""},
    {new Double(3.3), "Text"}
};

xData.setDataArray(aValues);

要将 System.Data.Datatable 转换为数组,请尝试使用以下代码从 Datatable 到多维数组

dt.AsEnumerable().Select(row => row.ItemArray).ToArray();
© www.soinside.com 2019 - 2024. All rights reserved.