由 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)文件的方法及示例代码