由 EPPlus 4.1 库以 .xlsx 格式创建的图表未在 openoffice 或 libreoffice 中显示

Posted

技术标签:

【中文标题】由 EPPlus 4.1 库以 .xlsx 格式创建的图表未在 openoffice 或 libreoffice 中显示【英文标题】:Charts created by EPPlus 4.1 library in .xlsx format are not displaying in openoffice or libreoffice 【发布时间】:2021-07-12 07:32:41 【问题描述】:

EPplus 在 C# 中创建的图表在 LibreOffice 和 OpenOffice 中不显示,但在 Microsoft Office 中可以正常显示。

有一种解决方法,如果我在 microsoft office 中打开 excel 文件,然后再次保存,则文件图表在 Libreoffice 和 OpenOffice 上正确可见。

Microsoft office 中显示的图表如下图所示:

在 LibreOffice 和 OpenOffice 中显示的图表如下图所示。

在使用 EPPlus 保存图表时是否需要设置任何属性,以便可以在 OpenOffice 中查看。

【问题讨论】:

【参考方案1】:

我也遇到了这个问题,不得不将生成的文件与保存的文件进行比较,并查看源代码以了解如何做到这一点:

对于折线图:

ExcelLineChartSerie serie = (ExcelLineChartSerie)chart.Series.Add(...);
serie.Marker = eMarkerStyle.None;
serie.LineColor = Color.FromArgb( 0x00, 0x45, 0x86 );

对于条形图:

ExcelChartSerie serie = chart.Series.Add(...);
serie.Fill.Style = eFillStyle.SolidFill;
serie.Fill.Color = Color.FromArgb( 0x00, 0x45, 0x86 );

我还没有使用其他图表,所以可能还有一些其他字段需要初始化。

更新:

我看到我的图表也没有坐标轴,不得不找出如何说服 libreoffice 绘制它们:

chart.XAxis.Border.Fill.Style = eFillStyle.SolidFill;
chart.XAxis.Border.Fill.Color = Color.FromArgb( 0x00, 0x00, 0x00 );
chart.YAxis.Border.Fill.Style = eFillStyle.SolidFill;
chart.YAxis.Border.Fill.Color = Color.FromArgb( 0x00, 0x00, 0x00 );

【讨论】:

感谢您的回复,但我的理解是,如果您使用的是 EPPlus,那么您必须为每个图表明确设置样式和颜色,然后才能在 libre office 中使用。

以上是关于由 EPPlus 4.1 库以 .xlsx 格式创建的图表未在 openoffice 或 libreoffice 中显示的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core(C#) EPPlus读取Excel(.xlsx)文件的方法及示例代码

.NET Core(C#) EPPlus写入保存Excel(.xlsx)文件的方法及示例代码

.NET Core(C#) EPPlus创建Excel(.xlsx)写入数据的方法及示例代码

如何在C#中使用EPPlus设置xlsx单元格宽度

如何使用 EPPlus 设置 XLSX 单元格宽度?

Safari 添加 .html 以使用 epplus jquery.fileDownload.js 下载 xlsx