我已经用C#编写的程序,由此它会自动从CSV文件生成曲线图对我来说,并把它到一个新的XLS文件。 但是,我需要改变线路的颜色(因为它是一个折线图)红色而不是默认的蓝色。
我发现这很难做到,我已经在网上找到的东西,没有奏效。 请能有人告诉我如何做到这一点?
我已经用C#编写的程序,由此它会自动从CSV文件生成曲线图对我来说,并把它到一个新的XLS文件。 但是,我需要改变线路的颜色(因为它是一个折线图)红色而不是默认的蓝色。
我发现这很难做到,我已经在网上找到的东西,没有奏效。 请能有人告诉我如何做到这一点?
下面是一个例子。 我注意到当我试图传递一个整数字节似乎以相反的顺序被读取。 所以分配0xFF0000
使颜色蓝色和0x0000FF
转动线红色。 好在微软提供了一个枚举。
Random random = new Random();
Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application();
xla.Visible = true;
Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet);
Worksheet ws = (Worksheet)xla.ActiveSheet;
// Now create the chart.
ChartObjects chartObjs = (ChartObjects)ws.ChartObjects();
ChartObject chartObj = chartObjs.Add(150, 20, 300, 300);
Chart xlChart = chartObj.Chart;
for (int row = 0; row < 16; row++)
{
ws.Cells[row + 2, 2] = row + 1;
ws.Cells[row + 2, 3] = random.Next(100);
}
Range xValues = ws.Range["B2", "B17"];
Range values = ws.Range["C2", "C17"];
xlChart.ChartType = XlChartType.xlLine;
SeriesCollection seriesCollection = chartObj.Chart.SeriesCollection();
Series series1 = seriesCollection.NewSeries();
series1.XValues = xValues;
series1.Values = values;
series1.Format.Line.ForeColor.RGB = (int)XlRgbColor.rgbRed;
series1.Format.Line.Weight = 5;
大多数这些类型的问题来自不能够找到需要修改的具体对象和属性。
一个肯定的方式来获得这些信息是打开Excel文件并转到线图。 开始录制宏,然后更改要更改的项目。 停止录制宏,看它生成的代码。 这会给你必须使用的确切对象和属性。
然后,您可以确保您的C#代码使用的是正确的对象和属性的语法。
要改变的线系列的颜色,你可以使用border属性:
series.Border.Color = (int)Excel.XlRgbColor.rgbGreen;
颜色也可以通过图表的图例改变。
要更改线的颜色:
((Excel.LegendEntry)chart.Legend.LegendEntries(1)).LegendKey.Border.ColorIndex = 10;
要更改条的颜色:
((Excel.LegendEntry)chart.Legend.LegendEntries(1)).LegendKey.Interior.Color = (int)Excel.XlRgbColor.rgbRed;
录制宏绝对不是“一定”的方式来找到答案。 对我来说,在Excel 2007年我用图表记录给我什么,除了一个长长的清单“ActiveSheet.ChartObjects(”图1“)。激活”。 以上为我工作(当我搜索或其他地方)的答案都不对; 但是,我能够改变线条的粗细和文本并更改标记。
我是用变色遇到的问题是,颜色默认为自动对我来说,当我提出一个新的图表或添加新的系列。 为了关闭这种行为显然你需要设置Line.Visible属性msoTriStateMixed。 如果我改变可见回为msoTrue,则该行回到他们原来的颜色,而“自动”是根据数据系列格式,行样式属性再次检查。 此代码对我的作品在Excel 2007中:
Excel.Series series = (Excel.Series)chartPage.SeriesCollection(1);
series.Format.Line.Weight = 1.0F;
series.Format.Line.Visible = MsoTriState.msoTriStateMixed; //Tri-State
series.Format.Line.ForeColor.RGB =(int)Microsoft.Office.Interop.Excel.XlRgbColor.rgbRed;