找回密码
 立即注册

QQ登录

只需一步,快速开始

TiamoHoney

注册会员

9

主题

25

帖子

88

积分

注册会员

积分
88
TiamoHoney
注册会员   /  发表于:2023-8-18 10:17  /   查看:1079  /  回复:5
1金币
针对饼图图例配色问题,Spread JS提供方法

switch (seriesItem.chartType) { // 其中colors是一个配色数组
              case [url=]GC.Spread.Sheets.Charts.ChartType.columnClustered:[/url]
              case GC.Spread.Sheets.Charts.ChartType.barClustered:
                seriesItem.backColor = colors[index];
                break;
              case GC.Spread.Sheets.Charts.ChartType.line:
                [url=]seriesItem.border.color[/url] = colors[index];
                break;
              case GC.Spread.Sheets.Charts.ChartType.xyScatter:
                [url=]seriesItem.symbol.border.color[/url] = colors[index];
                seriesItem.symbol.fill = colors[index];
                break;
              case GC.Spread.Sheets.Charts.ChartType.pie:
                seriesItem.backColor = colors.join(',');

                break;
              default:
                break;
可以直接通过修改图例颜色使用字符串
GCExcel中针对Series对象在处理样式时
IWorksheet worksheet = workbook.getActiveSheet();
IShapes shapes = worksheet.getShapes();


hapes.get(i).getChart().getSeriesCollection().get(m).getFormat().getFill().getColor().setRGB()
这个方法只能配置Color对象,那针对饼图这种一个一个Series但需要多个颜色应该怎么配置?

最佳答案

查看完整内容

您好,这边调研了一下,您可以修改series的point来实现:

5 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-18 10:17:20
来自 4#
您好,这边调研了一下,您可以修改series的point来实现:

image.png653554381.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-18 11:24:31
2#
您好,请参考下图看能否解决您的问题:

image.png275989989.png

参考链接:https://demo.grapecity.com.cn/do ... /configseriesformat
回复 使用道具 举报
TiamoHoney
注册会员   /  发表于:2023-8-18 13:29:03
3#
Joestar.Xu 发表于 2023-8-18 11:24
您好,请参考下图看能否解决您的问题:

您好,根据SpreadJS提供的API来理解,饼图只存在一个系列,处理的方式是将配色以逗号分隔的方式传递给该系列,前端会根据分类依次取色,但是GCExcel中针对饼图系列的配色所提供的接口只能允许传递一种颜色,以下是我的代码上下文:
switch (chartType) {
                    case Line:
                        shapes.get(i).getChart().getSeriesCollection().get(m).getFormat().getLine().getColor().setRGB(targetColor);
                        break;
                    case ColumnClustered:
                    case BarClustered:
                        shapes.get(i).getChart().getSeriesCollection().get(m).getFormat().getFill().getColor().setRGB(targetColor);
                        break;
                    case XYScatter:
                        shapes.get(i).getChart().getSeriesCollection().get(m).getMarkerFormat().getFill().getColor().setRGB(targetColor);
                        shapes.get(i).getChart().getSeriesCollection().get(m).getMarkerFormat().getLine().getColor().setRGB(targetColor);
                        break;
                    case Pie:
//                        Color[] colorsArr = new Color[colorArr.size()];
//                        shapes.get(i).getChart().getSeriesCollection().get(m).getFormat().getFill().getColor().setRGB(Color.GetLightBlue());
                    default:
                        break;
                }
后端需要GCExcel处理饼图的系列配色,按照您提供的方式只能实现一种,无法实现按配置的颜色显示,需要与SpreadJS保持一致的配置,才可以使导出后的文件与预览期的文件保持一致
回复 使用道具 举报
TiamoHoney
注册会员   /  发表于:2023-8-18 15:29:37
5#
Joestar.Xu 发表于 2023-8-18 10:17
您好,这边调研了一下,您可以修改series的point来实现:

非常感谢,我这边已经成功解决该问题
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-18 15:37:49
6#
TiamoHoney 发表于 2023-8-18 15:29
非常感谢,我这边已经成功解决该问题

好的,那就先结贴了,后续有其他问题的话随时开贴提问哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部