青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 25,  comments - 36,  trackbacks - 0
由于公司一個項目要用到excel的圖表,如是這個任務自然落到我這個全能型碼農的身上了(~~~^_^~~~ ,自戀一下)。
實現IDL對excel對圖表的操作,因為對IDL編程不熟悉(沒有學過,看過幾行代碼后寫過IDL代碼而已,任何語言感覺差不多,學了c/c++ 其他的語言都是浮云)。
如是我就先用c#對excel 進行操作,因為簡單。(哪個語言對開發東西簡單自然用哪個)。

網上例子真少。。。。。可以說對圖表幾乎沒有,只能通過office的宏來分析怎么寫代。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using MSExcel = Microsoft.Office.Interop.Excel;
 6 using System.IO;
 7 using System.Reflection;
 8 
 9 
10 namespace 操作Excel
11 {
12     class Program
13     {
14         static void Main(string[] args)
15         {
16             MSExcel.Application excelApp;              //Excel應用程序變量 
17             MSExcel.Workbooks excelDoc;                     //Excel文檔變量 
18 
19             excelApp = new MSExcel.ApplicationClass();
20             string path = @"F:\23.xls";
21             Object Nothing = Missing.Value;
22             excelDoc = excelApp.Workbooks;
23             excelApp.ShowStartupDialog = true;
24 
25 
26             MSExcel::Workbook doc = excelDoc.Open(path, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing);
27             if (null == doc)
28             {
29                 return;
30             }
31 
32 
33             MSExcel.Worksheet ws = (MSExcel.Worksheet)doc.Sheets[1];        //索引從1開始 ,難道c# 我用c#不熟悉
34 
35             try
36             {
37 
38                MSExcel.Worksheet ws2 =  ((MSExcel.Worksheet)excelApp.ActiveSheet);
39 //這里我找了好就才知道要用ChartObject 來接,我開始用Chart ,_Chat都不行,注意了
40                MSExcel.ChartObject c = (MSExcel.ChartObject)ws2.ChartObjects("Chart 1");
41                c.Activate();
42                MSExcel.Chart chart1 = excelApp.ActiveChart;
43                Console.WriteLine("{0}", chart1.ChartTitle.Text);
44                chart1.ChartTitle.Text = "hello world";//設置標題
45                 //設置 x,y軸。
46                MSExcel::Axis aa = (MSExcel::Axis)chart1.Axes(2, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary);
47                //aa.MinimumScale = 341;
48                aa.MaximumScale = 370;
49                MSExcel::Axis bb = (MSExcel::Axis)chart1.Axes(1, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary);
50                bb.MinimumScale = 0.5;
51                
52             }
53             catch (System.Exception ex)
54             {
55                 Console.WriteLine("{0}", ex.Message);
56             }
57             
58            
59 
60             
61          
62            Console.Read();
63 
64 
65             //////////////////////////////////////////////////////////////////////////
66             //  對表格進行修改
67            // MSExcel.Range r;
68             // r = ws.get_Range("c5", "c5");
69            // r.Value2 = 1234;
70             //
71             //////////////////////////////////////////////////////////////////////////
72 
73             doc.Close(Nothing, Nothing, Nothing);
74             //excelApp.Save(Nothing);
75             excelApp.Quit();
76 
77 
78            
79 
80         }
81     }
82 }
83 
附上IDL的代碼,或許會幫到IDL編程的人。
  1 ;-----------------------------------------------------------------
  2 ;   GetAllDataFromCurrentWorksheet Method. Returns all valid, contiguous data
  3 ;       stored in currently selected worksheet
  4 ;
  5 ;     Example:
  6 ;
  7 ;       oIDL_Excel = obj_new("ITCffExcel", fileName, SHEET='irreg_grid1')
  8 ;       data = oIDL_Excel->GetAllDataFromCurrentWorksheet()
  9 ;-
 10 FUNCTION ITCffExcel::GetAllDataFromCurrentWorksheet
 11 
 12     COMPILE_OPT IDL2
 13     
 14     On_Error, 2
 15 
 16     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
 17         self.oSheet->GetProperty, Usedrange = oUsedCells
 18         self.oCellRange = oUsedCells
 19         self.oCellRange->GetProperty, Value = myValues
 20     IF (Size(myValues, /Type) EQ 0) THEN BEGIN ; undefined
 21         Message, 'Invalid Range '+range+'? Mixed data types not supported.'+ $
 22             ' Data must be numeric and contiguous.', /Ioerror
 23     ENDIF ELSE BEGIN
 24         ; Rearrange into IDL column-major format so user doesn't have to
 25         dims = Size(myValues, /Dimensions)
 26         myValues = Transpose(Reform(Temporary(myValues), dims[1], dims[0]))
 27 
 28         Return, myValues
 29     ENDELSE
 30 END
 31 
 32 
 33 pro ITCffExcel::SetChart,inputRange
 34   
 35 ; self.oSheet->GetProperty,Shapes = MyShapes
 36   ;MyShapes->AddChart
 37   
 38   self.oExcel->GetProperty,Charts = MyChart
 39   MyChart->add
 40   ;獲得剛剛添加的表,對它進行設置
 41   self.oExcel->GetProperty,ActiveChart = MyActiveChart
 42   ;又要獲取ChartType 進行賦值
 43   MyActiveChart->GetProperty,ChartType = MyChartType
 44   MyChartType = 51 ;這個值我是通過看C#代碼跟進去看到 。不想獲取對象來獲取
 45   ;設置數據源
 46     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
 47 
 48     IF (Size(inputRange, /Dimensions) EQ 2) THEN BEGIN
 49         self.oSheet->GetProperty, inputRange[0], inputRange[1], Range = oCellRange
 50         self.oCellRange = oCellRange
 51     ENDIF ELSE BEGIN
 52         self.oSheet->GetProperty, inputRange, Range = oCellRange
 53         self.oCellRange = oCellRange
 54     ENDELSE
 55   MyActiveChart->SetSourceData,self.oCellRange,2
 56   MyActiveChart->Location,2,"sheet1"
 57   
 58 END
 59 
 60 ;;;設置圖表標題
 61 pro ITCffExcel::SetChartTitle,strTitle
 62   
 63     MyChart = self.oSheet->ChartObjects("Chart 1") 
 64     MyChart->Activate
 65     self.oExcel->GetProperty,ActiveChart = MyActiveChart
 66     MyActiveChart->GetProperty,ChartTitle = ChatTitle
 67     ChatTitle->SetProperty,Text = strTitle
 68     
 69 
 70    
 71   
 72   
 73 END
 74 ;-----------------------------------------------------------------
 75 ;
 76 ; 刪除指定表格。這樣就可以就填充了。
 77 ;
 78 pro ITCffExcel::DeleteChart,inputRange
 79     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
 80 
 81     IF (Size(inputRange, /Dimensions) EQ 2) THEN BEGIN
 82         self.oSheet->GetProperty, inputRange[0], inputRange[1], Range = oCellRange
 83         self.oCellRange = oCellRange
 84     ENDIF ELSE BEGIN
 85         self.oSheet->GetProperty, inputRange, Range = oCellRange
 86         self.oCellRange = oCellRange
 87     ENDELSE
 88     
 89     ;進行刪除
 90     ;self.oCellRange->GetProperty,Select = MySelect
 91     ObjSelect = self.oCellRange->Select()
 92     ;ObjSelect->Delete
 93     self.oCellRange->Delete
 94     
 95   ;MyActiveChart->SetSourceData,self.oCellRange,2
 96   ;MyActiveChart->Location,2,"sheet1"
 97   
 98 END
 99 
100 ;;設置y軸的屬性
101 ;XorY : 0 代表設置 x , 1 代表設置y
102 ;MaximumScale:最大值
103 ;MinimumScale: 最小值
104 ;MinorUnit: 最小刻度
105 ;self.oSheet 
106 PRO ITCffExcel::SetXYAxes, XorY,nMaximumScale,nMinimumScale,nMajorUnit
107   MyChart = self.oSheet->ChartObjects("Chart 1") 
108   MyChart->Activate
109  
110   self.oExcel->GetProperty,ActiveChart = MyActiveChart
111   if (XorY EQ 0)then  begin
112   Axis = MyActiveChart->Axes(1,1)
113   endif else begin
114   Axis = MyActiveChart->Axes(2,1)
115   endelse
116   ;Axis->GetProperty,MaximumScale = MyMaximumScale
117   Axis->SetProperty,MaximumScale = nMaximumScale
118   Axis->SetProperty,MinimumScale = nMinimumScale
119   Axis->SetProperty,MajorUnit = nMajorUnit
120 
121 End
122 
123 
124 
125 ;-----------------------------------------------------------------
126 ;
127 ;保存文件
128 ;
129 PRO ITCffExcel::Save, fileName
130 
131     COMPILE_OPT IDL2
132 
133     IF N_Elements(fileName) EQ 0 THEN fileName = self.fileName
134 
135     self.oWkBookData->SaveAs, fileName
136 END
137 
138 ;-----------------------------------------------------------------
139 ;   GetData Method. Data from passed in range parameter
140 ;
141 ;   @param inputRange {in}{required}{scalar or 2 element string array - 1 and
142 ;       2D ranges supported} input
143 ;
144 ;     Example:
145 ;
146 ;       oExcel = Obj_New("ITCffExcel", "myData.xls")
147 ;       myData= oExcel->GetData("A1:A100" | ["P1:P100","S1:S100"])
148 ;-
149 FUNCTION ITCffExcel::GetRangeData, inputRange
150 
151     COMPILE_OPT IDL2
152     
153     On_Error, 2
154 
155     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
156 
157     IF (Size(inputRange, /Dimensions) EQ 2) THEN BEGIN
158         self.oSheet->GetProperty, inputRange[0], inputRange[1], Range = oCellRange
159         self.oCellRange = oCellRange
160     ENDIF ELSE BEGIN
161         self.oSheet->GetProperty, inputRange, Range = oCellRange
162         self.oCellRange = oCellRange
163     ENDELSE
164 
165     self.oCellRange->GetProperty, Value = myValues
166 
167     IF (Size(myValues, /Type) EQ 0) THEN BEGIN ; undefined
168         Message, 'Invalid Range '+range+'? Mixed data types not supported.'+ $
169          ' Data must be numeric and contiguous.', /Ioerror
170     ENDIF ELSE Return, myValues
171 END
172 
173 ;-----------------------------------------------------------------
174 ;
175 ;設置單元格數據
176 ;
177 PRO ITCffExcel::SetRangeData, inputRange, value
178 
179     COMPILE_OPT IDL2
180     
181     On_Error, 2
182 
183     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
184 
185     IF (Size(inputRange, /Dimensions) EQ 2) THEN BEGIN
186         self.oSheet->GetProperty, inputRange[0], inputRange[1], Range = oCellRange
187         self.oCellRange = oCellRange
188     ENDIF ELSE BEGIN
189         self.oSheet->GetProperty, inputRange, Range = oCellRange
190         self.oCellRange = oCellRange
191     ENDELSE
192 
193     self.oCellRange->SetProperty, 'select', Value = value
194     
195     Obj_Destroy, self.oCellRange
196 END
197 
198 ;-----------------------------------------------------------------
199 ;   Sets Properties on ITCffExcel Object
200 ;
201 ;   @Keyword:
202 ;
203 ;      Sheet {in}{optional}{scalar string} input
204 ;
205 ;      Example:
206 ;
207 ;      oExcel = Obj_New("ITCffExcel", "myData.xls")
208 ;      oExcel->SetPropery, SHEET="Sheet2"
209 ;-
210 PRO ITCffExcel::SetProperty, Sheet = sheet, _Extra = extra
211 
212     COMPILE_OPT IDL2
213     
214     On_Error, 2
215 
216     IF (Obj_Valid(self.oSheet)) THEN Obj_Destroy, self.oSheet
217     
218     self.oSheetCollection->GetProperty, sheet, Item = oSheet
219     
220     self.oSheet = oSheet
221 END
222 
223 ;-----------------------------------------------------------------
224 ;
225 ;析構
226 ;
227 PRO ITCffExcel::Cleanup
228     
229     COMPILE_OPT IDL2
230     
231     On_Error, 2
232     
233     self.oWkBookData->SetProperty, Saved = 1
234     self.oWkBookCollection->Close
235     self.oExcel->Quit
236     
237     Obj_Destroy, [self.oSheet, self.oCellRange, self.oSheetCollection, $
238                     self.oWkBookData, self.oWkBookCollection, self.oExcel]
239 END
240 
241 ;-----------------------------------------------------------------
242 ;
243 ;初始化
244 ;
245 FUNCTION ITCffExcel::Init, fileName, Sheet = sheet
246 
247     COMPILE_OPT IDL2
248     
249     On_Error, 2
250 
251     IF (N_Params() LT 1) THEN Message, 'ITCffExcel::Init requires file name'
252 
253     ; Use the IDL COM import bridge to init Excel Application Object
254     self.oExcel = Obj_New("IDLcomIDispatch$PROGID$Excel_Application")
255     
256     IF ~self.oExcel THEN Return, 0
257 
258     ; Get a reference to the Excel Workbook Collection Object
259     self.oExcel->GetProperty, Workbooks = oWkBookCollection
260     self.oWkBookCollection = oWkBookCollection
261 
262     self.fileName = fileName
263 
264     ; Open the Excel data
265     self.oWkBookData = self.oWkBookCollection->Open(self.fileName)
266 
267     ; Get a reference to the sheets collection
268     self.oWkBookData->GetProperty, Sheets = oSheetCollection
269     self.oSheetCollection = oSheetCollection
270 
271     ; Parmamerized property - props can return a value
272     ; (this syntax used in collections) - Goofy COM
273     IF (Keyword_Set(sheet)) THEN BEGIN
274         self.oSheetCollection->GetProperty, sheet, Item = oSheet
275         self.oSheet = oSheet
276     ENDIF ELSE BEGIN
277         self.oSheetCollection->GetProperty, 'Sheet1', Item=oSheet
278         self.oSheet = oSheet
279     ENDELSE
280 
281     Return, 1
282 END
283 
284 ;-----------------------------------------------------------------
285 ;
286 ;定義
287 ;
288 PRO ITCffExcel__Define
289 
290     COMPILE_OPT IDL2
291 
292     void = {ITCffExcel                                      , $
293             
294             ;參數
295             fileName            :   ''                      , $
296                         
297             ;對象
298             oExcel              :   Obj_New()               , $ 
299             oWkBookCollection   :   Obj_New()               , $
300             oWkBookData         :   Obj_New()               , $ 
301             oSheetCollection    :   Obj_New()               , $ 
302             oSheet              :   Obj_New()               , $ 
303             oCellRange          :   Obj_New()               $  
304             }
305             
306 END
posted on 2013-07-01 12:50 小魚兒 閱讀(3780) 評論(1)  編輯 收藏 引用

FeedBack:
# re: c#對excel 圖表操作
2015-02-02 16:03 | HappyCoding
不錯. 但是使用free spire.xls的話好像更簡單,用Chart.Add()方法就可以隨意選擇chart類型

Chart chart = ws.Charts.Add(ExcelChartType.ColumnClustered);
chart.DataRange = ws.Range["A1:C5"];

詳細步驟可以看看:http://www.cnblogs.com/Yesi/p/4241593.html  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2013年7月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(4)

隨筆檔案(25)

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品日韩在线| 亚洲一区www| 欧美国产成人在线| 久久久久久自在自线| 亚洲欧美三级在线| 99国产成+人+综合+亚洲欧美| 久久久人成影片一区二区三区 | 欧美日韩成人一区二区三区| 久热精品在线| 另类亚洲自拍| 欧美日韩成人综合| 欧美韩日一区| 欧美日韩一区二区三区在线 | 免费短视频成人日韩| 久久久久久久久久久久久9999| 久久黄金**| 欧美成人精品在线观看| 欧美电影免费观看高清完整版| 亚洲国产精品成人综合| 久久免费午夜影院| 亚洲电影免费| 亚洲综合精品| 免费人成精品欧美精品| 欧美女同视频| 国产亚洲一级高清| 亚洲精品国产精品国自产观看浪潮| 一区二区日韩欧美| 久久精品九九| 99视频一区二区三区| 香蕉乱码成人久久天堂爱免费| 久久综合一区二区三区| 欧美午夜片在线观看| 狠狠综合久久av一区二区小说| 亚洲欧洲日本专区| 久久精品官网| 一区二区三区日韩欧美精品| 欧美自拍偷拍| 国产精品久久久久久久7电影| 有坂深雪在线一区| 香港成人在线视频| 亚洲激情网站| 欧美一区二区视频免费观看| 欧美黑人多人双交| 国产一区二区三区在线观看精品| 亚洲精品在线电影| 久久天天躁狠狠躁夜夜av| 一区二区av| 欧美精品国产| 亚洲国产精品t66y| 久久天堂成人| 久久av一区二区三区| 国产精品进线69影院| 亚洲精选久久| 亚洲电影在线看| 麻豆国产精品va在线观看不卡| 羞羞色国产精品| 亚洲精品之草原avav久久| 美日韩精品视频免费看| 国产在线视频不卡二| 午夜精品福利视频| 9色porny自拍视频一区二区| 欧美成人久久| 亚洲精品一区二区三区在线观看| 久久亚洲精品伦理| 久久国产精品72免费观看| 亚洲国产婷婷香蕉久久久久久| 欧美a一区二区| 久久国产黑丝| 国语自产精品视频在线看抢先版结局 | 亚洲电影在线看| 女女同性精品视频| 在线精品在线| 欧美激情一区在线观看| 美女脱光内衣内裤视频久久影院 | 在线亚洲免费视频| 日韩西西人体444www| 欧美系列一区| 欧美在线一二三区| 久久精品免费看| 亚洲大片av| 亚洲国产日韩欧美综合久久 | 中国成人在线视频| 国产农村妇女精品一区二区| 国产精品国内视频| 性色av一区二区三区红粉影视| 亚洲欧美激情精品一区二区| 国产精品乱码妇女bbbb| 久久久久久亚洲综合影院红桃| 久久先锋影音av| 中日韩高清电影网| 欧美在线中文字幕| 99精品国产在热久久婷婷| 亚洲资源av| 亚洲国产中文字幕在线观看| 亚洲精品视频在线观看免费| 国产精品一区视频| 亚洲国产精品一区二区久| 国产精品高潮在线| 欧美阿v一级看视频| 欧美婷婷久久| 欧美黄色一级视频| 国产乱码精品1区2区3区| 女主播福利一区| 国产亚洲欧美在线| 夜夜嗨av一区二区三区四区 | 在线观看欧美成人| 亚洲国产成人精品久久| 国产欧美日韩不卡| 亚洲国产精品ⅴa在线观看 | 欧美性猛交xxxx免费看久久久 | 欧美一区二区三区久久精品| 国产日韩在线看片| 欧美夫妇交换俱乐部在线观看| 欧美亚洲视频| 亚洲一区二区精品| 亚洲每日更新| 亚洲黄色一区二区三区| 亚洲欧美精品在线| 欧美国产日产韩国视频| 99视频一区二区| 亚洲色在线视频| 国内成人精品视频| 欧美大片免费观看| 狠狠色伊人亚洲综合成人 | 中国日韩欧美久久久久久久久| 亚洲日本aⅴ片在线观看香蕉| 国产精品99免费看 | 久久午夜国产精品| 老司机aⅴ在线精品导航| 久久视频国产精品免费视频在线| 久久免费一区| 一区二区三区欧美激情| 欧美日韩国产美女| 日韩亚洲综合在线| 欧美日韩在线一二三| 久久美女艺术照精彩视频福利播放| 久久视频这里只有精品| 一本色道综合亚洲| 欧美一区二区高清| 久久嫩草精品久久久精品一| 欧美日韩精品综合| 久久青草欧美一区二区三区| 欧美精品黄色| 老司机午夜精品视频在线观看| 99视频日韩| 久久国产精品久久精品国产| 欧美激情一区二区三区全黄| 欧美在线免费视屏| 欧美护士18xxxxhd| 久久久最新网址| 国产精品v日韩精品| 欧美激情第五页| 免费看亚洲片| 日韩亚洲在线观看| 亚洲国产激情| 欧美日韩成人综合| 亚洲国产日韩一区| 亚洲国产高清视频| 久久九九99| 日韩香蕉视频| 久久久久国产精品午夜一区| 亚洲欧美日韩在线观看a三区| 免费在线国产精品| 久久久久久高潮国产精品视| 久久色在线观看| 亚洲精选在线| 日韩一区二区免费高清| 久久网站热最新地址| 亚洲免费一在线| 欧美午夜免费| 免费不卡视频| 久久久综合香蕉尹人综合网| 亚洲欧美在线视频观看| 亚洲砖区区免费| 久久av红桃一区二区小说| 欧美在线亚洲综合一区| 亚洲欧美日韩中文播放| 国产伦精品一区二区三区免费迷| 狠狠综合久久| 欧美一区二区视频97| 亚洲精品美女| 国内久久婷婷综合| 亚洲人成高清| 欧美日韩一区二区三区在线观看免 | 亚洲精品欧美极品| 奶水喷射视频一区| 亚洲欧美日韩精品久久| 久久久久国产精品麻豆ai换脸| 亚洲精品久久在线| 在线亚洲激情| 亚洲视频综合| 欧美一区二区视频网站| 精品99一区二区三区| 亚洲国产三级网| 国产亚洲a∨片在线观看| 欧美成人午夜激情在线| 国产日韩欧美综合| 亚洲综合第一| 午夜精品久久久久久久久久久久| 欧美制服丝袜|