图表
OfficeBasicTools
一个预先定义好的工具集
GetAllChart
这是一个函数,返回一个字典,key是Sheet的名字,value是Sheet中的第一个图表
需要提供一个打开的Workbooks,请注意,这个Workbooks必须已经被COM打开且中途不可被关闭
用法示例
c#
Dictionary<string, Excel.ChartObject> charts = OfficeBasicTools.GetAllChart(workbooks); PasteChart
这是一个函数,将一个图表粘贴到指定的Sheet中
需要提供一个打开的Sheet、启用的图表,请注意,这个Sheet必须已经被COM打开且中途不可被关闭,这个图表必须中途不可被释放
第三个参数为可选项,当复制或粘贴的系统操作失败的时候会重试。当不提供该参数时,默认重试5次。
用法示例
c#
OfficeBasicTools.PasteChart(chart, Sheet); ExcelChart_To_SVG
这是一个函数,将一个Excel下的所有Sheet中的第一个图表转换为SVG
需要提供一个excelApplication,输入目录
输出目录作为可选项,当没提供输出目录的时候,将输入目录作为输出目录
结果会放在输出目录的/img/excelFileName 下
c#
OfficeBasicTools.ExcelChart_To_SVG(excelApp, inputFolderPath); HexToBGR
颜色的HEX值转BGR
c#
int bgr = OfficeBasicTools.HexToBGR("#FF0000"); CloseAllOfficeProcess
关闭所有Excel进程
c#
OfficeBasicTools.CloseAllOfficeProcess(); 获取一个Excel中的所有Sheet中的第一个图表
c#
var excelTemplate = excelApp.Workbooks.Open(excelChartTemplatePath);
Dictionary<string, Excel.ChartObject> templates = OfficeBasicTools.GetAllChart(excelTemplate); 如何给一个柱形图的一个series下的每个柱子修改颜色
c#
for (int i = 1; i <= chartSeries.Count; i++)
{
var chartSeriesItem = chartSeries.Item(i);
for (int pointIndex = 1; pointIndex <= chartSeriesItem.Points().Count; pointIndex++)
{
chartSeriesItem.Points(pointIndex).Format.Fill.ForeColor.RGB = OfficeBasicTools.HexToBGR(color[pointIndex - 1]);
}
} 如何给一个图表的数据设置数据源
c#
Chart.SetSourceData(sheet.Range[$"A1:B2"]) 如何删除所有series
c#
for (int i = chartSeries.Count; i >= 1; i--)
{
Excel.Series seriesItem = chartSeries[i];
seriesItem.Delete();
System.Runtime.InteropServices.Marshal.ReleaseComObject(seriesItem);
} 如何设置Y轴标题
c#
var yAxis = chart.Chart.Axes(Excel.XlAxisType.xlValue);
yAxis.HasTitle = true;
yAxis.AxisTitle.Text = "title"; 如何手动添加series
c#
Excel.Series series1 = Chart.Chart.SeriesCollection().NewSeries();
series1.Name = Sheet.Cells[1, 1].Value2.ToString();
series1.XValues = Sheet.Range[$"B2:B{k - 1}"];
series1.Values = Sheet.Range[$"C2:C{k - 1}"];
for (int i = 0; i < count; i++)
{
int pos = k + i;
Excel.Series series2 = newChart.Chart.SeriesCollection().NewSeries();
series2.Name = newSheet.Cells[pos, 1].Value2.ToString();
series2.XValues = newSheet.Range[$"B{pos}:B{pos}"];
series2.Values = newSheet.Range[$"C{pos}:C{pos}"];
}