2013-04-06 60 views
2

我有一張Excel表格分爲兩面。在左側,我從ASP.NET應用程序導出數據。右側是一個圖表,根據導出的數據配置該圖表以進行填充。如何使用C#設置基於GridView的Excel圖表區域範圍?

問題是我已爲表單中的左側數據保留了某些行和列。例如,我假設所有報告都有10列和31行。報告可以是每日/每週/每月類型。對於日常報告,第一列是從1到31的日期。因此,我將該表的左側預留爲最多31行和10列。

將數據從我的應用程序正確導出到此工作表區域,並且還填充了圖表。但問題是導出的數據可能只有5行和3列,但由於圖表區域配置爲31行和10列,因此可見的圖表條寬度非常薄。

有沒有一種方法可以基於GridView行和列以編程方式控制圖表區域?

在我的應用程序中,我首先在GridView上顯示結果。當用戶單擊「導出」按鈕時,此GridView數據將導出到Excel工作表的左側保留區域。

如何編程設定圖表區域從當前excel工作表的C#代碼的範圍?

+0

請按照以下步驟'1'查找報告'2'的最後一行和最後一列'從該信息'3'構建您的數據範圍更改酸圖表的cedata。你可能想嘗試一下,併發布你試過的代碼,如果你被卡住了,我們會從那裏拿走它? – 2013-04-06 08:30:04

+0

或者如果你想在VB.Net準備好的例子,那麼我可以指導你一個鏈接,然後你可以修改它們? – 2013-04-06 08:34:12

+0

請提供鏈接。 – RKh 2013-04-06 08:47:17

回答

1

我相信有兩種方法可以解決你的問題

1)首先將情節圖表動態。那是當你的數據集,你可以 在運行時創建圖表和分配您Datarange那是你的圖表數據源

一個簡單的例子如下:

Excel.Application XlApp = null; 
Excel.Workbook workbook = null; 
Excel.Worksheet Ws = null; 
Excel.Range Range1 = null; 
Excel.RangeDataRange = null; 

XlApp = new Excel.Application(); 
XlApp.Visible = true; 
workbook = XlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); 
Ws = (Excel.Worksheet)workbook.Worksheets[1];//Lets say you have your graph at 1 sheet 
XlApp.WindowState = XlWindowState.xlMaximized; 

Ws.Cells.Clear();//Clear your sheet of any existing data 

ChartObjs = null; 
ChartObj = null; 
xlChart = null; 
Range1 = Ws.get_Range(Ws.Cells[39, 6], Ws.Cells[48, 10]); 
ChartObjects WsChartObjs = (ChartObjects)Ws.ChartObjects(Type.Missing); 
ChartObj = WsChartObjs.Add((double)Range1.Left + 115, (double)Range1.Top - 1, (double)Range1.Width - 25, (double)Range1.Height + 5); 
xlChart = ChartObj.Chart; 

DataRange = null; 

if (MyDataset.Tables[0].Rows.Count > 10) 
{ 
    DataRange = Ws.get_Range(Ws.Cells[12, 14], Ws.Cells[12 + 

    MyDataset.Tables[0].Rows.Count, 15]);//or whatever your range may be 
} 


    xlChart.SetSourceData(DataRange, System.Type.Missing); 
    xlChart.ChartType = XlChartType.xlBarClustered; 
    xlChart.ChartArea.Fill.Visible =    
    Microsoft.Office.Core.MsoTriState.msoFalse; 
    xlChart.ChartArea.Border.Color = 
    System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(255, 255, 255)); 
    xlChart.PlotArea.Interior.Color = 
    System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(255, 255, 255)); 
    xlChart.PlotArea.Border.Color = System.Drawing.ColorTranslator.ToOle(255, 255, 255)); 

這是第apporach

2)第二種方法是,在你在Excel中選擇現有圖表,並改變其數據源

簡單的例子是

Excel.ChartObject MyChartObject = (Excel.ChartObject)Ws.ChartObjects(1);//You can run 
//macro and get your chart number and pass that instead of "1" 
MyChartObject .Activate(); 

xlChart = MyChartObject .Chart; 
xlChart.SetSourceData(DataRange, System.Type.Missing); 

我想這就是所有

希望這幫助