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

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 小魚兒 閱讀(3781) 評論(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>
            欧美亚洲在线| 久久久之久亚州精品露出| 亚洲国产视频a| 欧美亚洲视频在线看网址| 在线视频欧美一区| 久久青青草原一区二区| 欧美一区中文字幕| 欧美视频在线一区| 一本色道久久综合亚洲91| 亚洲欧洲中文日韩久久av乱码| 欧美一区影院| 久久精品欧洲| 国产视频综合在线| 午夜精品久久久久久久久久久久久| 亚洲视频狠狠| 欧美日韩不卡| 亚洲开发第一视频在线播放| 亚洲精选一区二区| 欧美二区在线播放| 亚洲人成7777| av成人免费在线观看| 欧美国产日产韩国视频| 亚洲国产精品t66y| 日韩午夜av电影| 欧美日韩精品一区| 99v久久综合狠狠综合久久| 一本一本久久a久久精品牛牛影视| 欧美黄色免费网站| 日韩一区二区精品在线观看| 99国产精品视频免费观看| 欧美日本韩国| 亚洲午夜精品久久| 久久精品首页| 在线免费观看日韩欧美| 免费成人在线观看视频| 亚洲三级视频| 欧美亚洲网站| 国精品一区二区| 蜜臀91精品一区二区三区| 亚洲国产日本| 亚洲欧美视频一区| 国产一区二区三区自拍| 久久综合网hezyo| 亚洲三级视频| 欧美在线观看日本一区| 影音先锋中文字幕一区二区| 免费日韩av| 亚洲视频大全| 老司机亚洲精品| 99日韩精品| 国产一级揄自揄精品视频| 免费观看成人www动漫视频| 日韩亚洲视频在线| 久久午夜羞羞影院免费观看| 亚洲精品久久7777| 国产精品女同互慰在线看| 久久九九99| 99re热这里只有精品免费视频| 久久国产一区| 99视频一区二区| 国产亚洲精品久久久久动| 欧美激情视频一区二区三区免费| 亚洲天天影视| 亚洲国产一区二区视频| 久久精品成人欧美大片古装| 亚洲人成网站精品片在线观看| 国产精品美女一区二区| 美日韩精品免费观看视频| 亚洲视屏一区| 亚洲国产一区二区视频| 久久久久久网| 亚洲影院在线| 亚洲日本电影| 激情一区二区| 国产精品亚洲一区| 欧美日韩亚洲国产一区| 麻豆成人91精品二区三区| 亚洲欧美日韩爽爽影院| 亚洲精品在线观看免费| 欧美大片在线影院| 久久久青草青青国产亚洲免观| 亚洲在线一区| 中国亚洲黄色| 亚洲卡通欧美制服中文| 激情成人亚洲| 国产一区二区精品| 国产伦精品一区二区三区| 欧美久久电影| 欧美精品色综合| 嫩草国产精品入口| 久久先锋影音av| 久久久99免费视频| 欧美一区在线直播| 欧美亚洲一区三区| 亚洲欧美日韩国产另类专区| 一本色道久久综合精品竹菊 | 亚洲欧美日韩精品久久久| 亚洲欧洲在线一区| 亚洲电影网站| 亚洲电影在线观看| 伊人成人网在线看| 激情综合久久| 亚洲风情亚aⅴ在线发布| 精久久久久久久久久久| 黄色资源网久久资源365| 国产午夜精品久久久久久免费视| 国产精品综合网站| 国产欧美一区二区三区久久| 国产精品日韩欧美一区| 国产精品免费一区二区三区在线观看| 欧美色欧美亚洲另类七区| 欧美日韩一区二区三区高清| 欧美涩涩网站| 国产精品综合久久久| 国产综合一区二区| 黄色亚洲免费| 亚洲精品久久嫩草网站秘色 | 1024精品一区二区三区| 亚洲国产成人在线播放| 亚洲精品一区中文| 亚洲视频专区在线| 欧美一区二区三区在线免费观看| 久久国产欧美精品| 麻豆精品在线播放| 91久久久亚洲精品| 在线中文字幕日韩| 欧美资源在线观看| 麻豆91精品| 国产精品国产三级国产aⅴ9色| 国产伦精品一区二区三区在线观看| 国产视频在线观看一区二区| 亚洲高清网站| 亚洲网站在线| 久久亚洲不卡| 亚洲精品一区二区三区99| 亚洲永久免费观看| 麻豆成人在线| 国产精品区一区| 在线观看欧美激情| 亚洲天堂av在线免费| 久久成人综合视频| 最新国产成人av网站网址麻豆| 一本大道av伊人久久综合| 久久精品二区| 欧美午夜电影完整版| 伊人成人在线视频| 亚洲网站视频| 久久这里有精品15一区二区三区| 亚洲欧洲一区二区在线播放| 亚洲欧洲99久久| 欧美精品一区二区三区在线看午夜| 国产精品日韩欧美一区| 亚洲第一在线视频| 欧美一区二区三区免费观看视频| 欧美黄污视频| 欧美在线在线| 欧美性猛交xxxx免费看久久久| 在线观看亚洲| 久久福利一区| 中文国产一区| 欧美精品手机在线| 亚洲国产91精品在线观看| 欧美在线999| 99re6热只有精品免费观看| 老司机一区二区三区| 国产精品人人爽人人做我的可爱 | 欧美一区观看| 99视频一区二区| 欧美成人在线网站| 在线精品视频一区二区三四| 欧美一区二区三区另类| 亚洲乱码国产乱码精品精98午夜 | 欧美电影资源| 国产综合久久| 久久大逼视频| 亚洲欧美另类久久久精品2019| 欧美区二区三区| 日韩亚洲综合在线| 欧美激情女人20p| 麻豆91精品| 亚洲福利国产精品| 欧美成年人视频网站欧美| 久久av一区二区三区| 国产午夜精品全部视频播放 | 久久精品国产精品亚洲综合| 国产日韩欧美精品在线| 午夜一区二区三视频在线观看 | 亚洲你懂的在线视频| 欧美系列精品| 亚洲综合成人婷婷小说| 亚洲小说区图片区| 国产精品久久久久久久电影 | 美女久久一区| 久久久久久亚洲精品中文字幕 | 亚洲香蕉成视频在线观看 | 影音先锋一区| 老牛嫩草一区二区三区日本 | 香蕉亚洲视频| 国产亚洲精品久| 你懂的视频一区二区|