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

问题描述

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

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

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

open in Microsoft excel viewer

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

OpenOffice image

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

解决方法

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

对于折线图:

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,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 );

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...