如何设置TickLabels的边框颜色excel图表c#

我正在开发一个图表编程使用C#和Excel的互操作DLL。 我必须在Excel图表中设置TickLabels的边框颜色。 这里是我的屏幕截图,我指的是需要以编程方式设置边框颜色的区域。 我试了很多search谷歌,但没有发现任何线索。 所以请看我的图片和代码,并帮助我实现我的目标。

在这里输入图像说明

这是我的完整代码

public ChartData PrepareExcel() { bool flag = false; int rowindex = 3; if (oData != null) { if (oData.Tables.Count > 0) { if (oData.Tables[0].Rows.Count > 0) { Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet1; Excel.Worksheet xlWorkSheet2; Excel.Worksheet xlWorkSheetChart; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); try { xlWorkSheet1 = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet1.Name = "Detail Data"; xlWorkSheet2 = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2); xlWorkSheet2.Name = "Summary Data"; xlWorkSheetChart = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(3); xlWorkSheetChart.Name = "Chart"; // for first sheet start xlWorkSheet1.Cells[1, 1] = "Daily Finished Jobs History Detail Report From " + DateTime.ParseExact(this.startdate, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd") +" To " + DateTime.ParseExact(this.enddate, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"); xlWorkSheet1.get_Range("A1", "Y1").Merge(true); xlWorkSheet1.get_Range("A1", "Y1").HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; xlWorkSheet1.get_Range("A1", "Y1").Font.Bold = true; xlWorkSheet1.get_Range("A1", "Y1").Font.Size = 14; xlWorkSheet1.get_Range("A3", "Y3").Font.Bold = true; for (int x = 0; x <= oData.Tables[0].Columns.Count - 1; x++) { xlWorkSheet1.Cells[3, x + 1] = oData.Tables[0].Columns[x].ColumnName.ToString(); xlWorkSheet1.Columns[x + 1].AutoFit(); //xlWorkSheet1.Columns[x + 1].Font.Bold = true; } for (int x = 0; x <= oData.Tables[0].Rows.Count - 1; x++) { int row= rowindex + (x + 1); for (int y = 0; y <= oData.Tables[0].Columns.Count - 1; y++) { xlWorkSheet1.Cells[row, y + 1] = oData.Tables[0].Rows[x][y].ToString(); xlWorkSheet1.Columns[1].AutoFit(); } } // for first sheet end // for second sheet start xlWorkSheet2.Cells[1, 1] = "Daily Finished Jobs History Summary Report From " + DateTime.ParseExact(this.startdate, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd") + " To " + DateTime.ParseExact(this.enddate, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"); xlWorkSheet2.get_Range("A1", "I1").Merge(true); xlWorkSheet2.get_Range("A1", "I1").HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; xlWorkSheet2.get_Range("A1", "I1").Font.Bold = true; xlWorkSheet2.get_Range("A1", "I1").Font.Size = 14; xlWorkSheet2.get_Range("A3", "I3").Font.Bold = true; for (int x = 0; x <= oData.Tables[1].Columns.Count - 1; x++) { xlWorkSheet2.Cells[3, x + 1] = oData.Tables[1].Columns[x].ColumnName.ToString(); xlWorkSheet2.Columns[x + 1].AutoFit(); } for (int x = 0; x <= oData.Tables[1].Rows.Count - 1; x++) { int row = rowindex + (x + 1); for (int y = 0; y <= oData.Tables[1].Columns.Count - 1; y++) { xlWorkSheet2.Cells[row, y + 1] = oData.Tables[1].Rows[x][y].ToString(); xlWorkSheet2.Columns[1].AutoFit(); } flag = true; } //for second sheet end // chart start if (flag) { Excel.SeriesCollection seriesCollection; Excel.Series series1, series2, series3; Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheetChart.ChartObjects(Type.Missing); Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 20, 900, 520); Excel.Chart chartPage = myChart.Chart; chartPage.HasTitle = true; chartPage.ChartTitle.Text = "Daily Job History Chart From " + DateTime.ParseExact(this.startdate, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd") + " To " + DateTime.ParseExact(this.enddate, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"); chartPage.Legend.Position = XlLegendPosition.xlLegendPositionBottom; seriesCollection = (Excel.SeriesCollection)chartPage.SeriesCollection(Type.Missing); series1 = seriesCollection.NewSeries(); series2 = seriesCollection.NewSeries(); series3 = seriesCollection.NewSeries(); series1.Name = "='Summary Data'!$B$3"; series1.Values = "='Summary Data'!$B$4:$B$" + (5+ oData.Tables[1].Rows.Count); series1.ChartType = XlChartType.xlColumnClustered; series1.AxisGroup = XlAxisGroup.xlSecondary; series2.Name = "='Summary Data'!$C$3"; series2.XValues = "='Summary Data'!$A$4:$A$" + (5 + oData.Tables[1].Rows.Count); series2.Values = "='Summary Data'!$C$4:$C$" + (5 + oData.Tables[1].Rows.Count); series2.ChartType = XlChartType.xlLineMarkers; series3.Name = "='Summary Data'!$D$3"; series3.Values = "='Summary Data'!$D$4:$D$" + (5 + oData.Tables[1].Rows.Count); series3.ChartType = XlChartType.xlLineMarkers; series3.AxisGroup = XlAxisGroup.xlPrimary; Axis axis; axis = (Axis)chartPage.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); axis.HasTitle = true; axis.AxisTitle.Text = "Percentage/Hour"; axis.AxisTitle.Font.Color = Color.Blue; axis.Border.Color = Color.Transparent; axis.HasMajorGridlines = false; axis.HasMinorGridlines = false; axis = (Axis)chartPage.Axes(XlAxisType.xlValue, XlAxisGroup.xlSecondary); axis.HasTitle = true; axis.AxisTitle.Text = "Total Jobs completed"; axis.AxisTitle.Font.Color = Color.Blue; axis.HasMajorGridlines = true; axis.HasMinorGridlines = false; axis = (Excel.Axis)chartPage.Axes(XlAxisType.xlCategory); axis.MajorTickMark = XlTickMark.xlTickMarkNone; axis.HasMajorGridlines = true; chartPage.Axes(Excel.XlAxisType.xlCategory).Select(); chartPage.Axes(Excel.XlAxisType.xlCategory).TickLabels.Orientation = 35; } // chart end string strpath = System.Windows.Forms.Application.StartupPath.ToString() + "\\DailyFinishedJobHistoryReport_"+DateTime.Now.ToString("dd-MM-yyyy")+".xls"; if (File.Exists(strpath)) { File.Delete(strpath); } xlWorkBook.SaveAs(strpath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); } catch (Exception ex) { } finally { xlWorkBook.Close(false, misValue, misValue); xlWorkBook = null; xlApp.Quit(); xlApp = null; GC.Collect(); GC.WaitForPendingFinalizers(); } } } } return this; } 

请看看我的箭头区域的date显示 。 我想改变那个区域的边框颜色。 引导我。 谢谢

UPDATE

在这里输入图像说明

看到这个屏幕截图。 基本上我想改变该地区的边界颜色透明,但我没有得到任何线索,我需要添加代码。 如果仍然不清楚,请让我知道。 谢谢

假设你想要的是我通过注释所build议的内容,而不需要在代码的其余部分中进行太多的细节(只是快速的build议:更好地删除GC部分); 这是你以后的事情:

 axis = (Axis)chartPage.Axes(XlAxisType.xlCategory); axis.MajorTickMark = XlTickMark.xlTickMarkNone; axis.Format.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse; 

这个代码引用X轴:第二行删除主要的滴答声(图片中显示的小垂直线)和第三行水平线。 关于这第二次更正,请记住,您有.HasMajorGridlines = true; 在X轴上,因此您将继续看到一条水平线,即主网格线(除非写入.HasMajorGridlines = false;否则不能删除X轴)。

注意:由OP通过注释突出显示,上面代码的最后一行是指在Office 2003中不存在的属性( Format )。此代码应该适用于Office 2010和更新版本。