2017-04-04 9 views
0

私のExcelのスタイルをC#で変更することはできません。c#chart excel style

私はこれがあります。 default design

をし、私はこれを取得したいと思います: design I try to have

を私は、このテーマに関する話題をたくさん読んでそれらの多くを試してみましたが、何も動いていないようにみえ.. 。 私は円グラフのために欲しかったものを手に入れることに成功したが、それは私の「柱」チャートのために働いていない:

が、私はこれを試してみました

これは(私はそれが私たちがstackoverflow上の別の質問にしたいデザインの名前を取得する方法だったようにExcelでマクロで名前を見つけた)が、デザインはまだ青い列:ここでは

Microsoft.Office.Interop.Excel.XlChartType.xlColumnStacked; 

は私のコードです:

 object paramChartFormat = 1; 
     object paramCategoryLabels = 1; 
     object paramSeriesLabels = 1; 
     //bool paramHasLegend = true; 
     object paramTitle = "Collection"; 
     object paramCategoryTitle = ""; 
     object paramValueTitle = ""; 
     Range dataRange = null; 
     ChartObjects chartObjects = null; 
     //ChartObject newChartObject = null; 
     object paramMissing = Type.Missing; 
     string tuple = "C" + Row.ToString(); 
     dataRange = sheet.get_Range("A1", tuple); 
     chartObjects = (ChartObjects)(sheet.ChartObjects(paramMissing)); 
     /*newChartObject = chartObjects.Add(0, 100, 300, 300); 
     newChartObject.Chart.ChartWizard(dataRange, XlChartType.xl3DColumn, paramChartFormat, XlRowCol.xlRows, paramCategoryLabels, paramSeriesLabels, paramHasLegend, paramTitle, paramCategoryTitle, paramValueTitle, paramMissing); 
     */ 
     //Number of copies 
     Microsoft.Office.Interop.Excel.ChartObject chartObjectnbex = sheet.ChartObjects().Add((float)sheet.get_Range("B1").Left, (float)sheet.get_Range("B"+(Row+2).ToString()).Top, 300, 300); 
     chartObjectnbex.Chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlColumnStacked; 
     Microsoft.Office.Interop.Excel.Series seriesnbex = chartObjectnbex.Chart.SeriesCollection().Add(sheet.Range["B2:B" + Row.ToString()]); 
     seriesnbex.XValues = sheet.Range["A2:A" + Row.ToString()]; 
     seriesnbex.Name = "Nombre d'Exemplaires"; 
     //Nbre documents différents 

//このコード(円グラフが働いている):

Microsoft.Office.Interop.Excel.ChartObject myChart = (Microsoft.Office.Interop.Excel.ChartObject)chartObjects.Add((float)sheet.get_Range("B1").Left, (float)sheet.get_Range("B" + (Row + 77).ToString()).Top, 300, 300); 
      Microsoft.Office.Interop.Excel.Chart chartPage = myChart.Chart; 

      Microsoft.Office.Interop.Excel.SeriesCollection seriesCollection = chartPage.SeriesCollection(); 
      Microsoft.Office.Interop.Excel.Series series1 = seriesCollection.NewSeries(); 
      series1.XValues = sheet.Range["A2", "A"+Row.ToString()]; 
      series1.Values = sheet.Range["B2", "B" + Row.ToString()]; 
      chartPage.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlDoughnut; 
      chartPage.HasTitle = true; 
      chartPage.ChartTitle.Text = "Nombre d'exemplaires"; 
      Microsoft.Office.Interop.Excel.Axis axis = chartPage.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlValue, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary) as Microsoft.Office.Interop.Excel.Axis; 

      series1.ApplyDataLabels(Microsoft.Office.Interop.Excel.XlDataLabelsType.xlDataLabelsShowPercent, true, true, false, false, false, false, true); 

デザインを変えるのに間違っていることを知っていますか?私は私が間違ってやっていたものを見つけ

どうもありがとう、

R.

答えて

0

。私はセリフが1つしかなかったので、すべての番号をグループとして考えていました。私はそれが働いて、このコード出来上がりを書いた:

   //Nbre documents différents 
      Microsoft.Office.Interop.Excel.ChartObject chartObjectnbdd = sheet.ChartObjects().Add((float)sheet.get_Range("E1").Left, (float)sheet.get_Range("B" + (Row + 2).ToString()).Top, 300, 300); 
      chartObjectnbex.Chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlBarClustered; 
      chartObjectnbdd.Chart.HasTitle = true; 
      chartObjectnbdd.Chart.ChartTitle.Text = "Nombre de documents différents"; 
      Microsoft.Office.Interop.Excel.SeriesCollection seriescollnbdd = chartObjectnbdd.Chart.SeriesCollection(); 
      Microsoft.Office.Interop.Excel.Series seriesnbdd = null; 
      i = 2; 
      while (i <= Row) 
      { 
       seriesnbdd = seriescollnbdd.NewSeries(); 
       seriesnbdd.Name = excel.Cells[i, 1].Value.ToString(); 
       seriesnbdd.Values = sheet.Range["C" + i.ToString() + ":C" + i.ToString()]; 
       i++; 
      } 

出力(唯一の事は今「1」私は消去する方法を見つけ出すことはできませんされているが、それは大丈夫です):

Chart with colors

ありがとうございました!

関連する問題