Data operation 1. Get sheet. Void getsheet (char * psheetname, _ worksheet & excelsheet) {excelsheet. attachdispatch (excelsheets. getitem (_ variant_t (psheetname);} _ worksheet datasheet; getsheet ("data", datasheet); note: the sheet name must exist in the file; otherwise, the program throws an exception. To adapt to different file operations, the sheet name can be dynamically configured through the configuration file. 2. get rangevoid getrange (_ worksheet excelsheet, range & excelrange) {excelrange. attachdispatch (excelsheet. getcells ();} range datarange; getrange (datasheet, datarange); 3. obtain the data of the specified row and column # define LV (x) _ variant_t (long (x) # define SV (x) _ variant_t (X ). ...... Bool getdata (INT row, int col) {range. attachdispatch (datasheet. getcells (); range. attachdispatch (range. getitem (LV (ROW), LV (COL )). pdispval); colevariant vresult = range. getvalue2 (); If (vresult. vt = vt_empty) return false; return true;} 4. enter void setvalue (INT row, int Col, char * pdata) {datarange. setitem (LV (ROW), LV (COL), SV (pdata);} 5. if a table height variable is dtableheight and the width variable is dtablewidth, copy several copies of the table. The code for copying a row between each table is as follows: Int ROW = 1 range rgmyrge2, rgmyrge3for (INT I = 0; I <n; I ++) {rgmyrge2.attachdispatch (datarange. getitem (colevariant (long) (ROW), colevariant (long) 1 )). pdispval, true); rgmyrge3.attachdispatch (rgmyrge2.getresize (colevariant (long) dtableheight), colevariant (long) dtablewidth); rgmyrge3.copy (datarange. getitem (LV (long) (row + dtableheight), LV (long (1); ROW = row + dtableheight + 1;} chart operation Excel provides powerful chart processing functions, so we can easily draw various statistical reports. As shown in, we will process charts with fixed templates. 1. obtain the _ worksheet chartsheet; getsheet ("Graph", chartsheet); void getchart (_ worksheet excelsheet, int dchatno, _ chart & excelchart) {chartobjects objcharts; chartobject objchart; colevariant vopt (disp_e_paramnotfound, vt_error); objcharts = excelsheet. chartobjects (vopt); objchart = objcharts. item (colevariant (short) dchatno); excelchart. attachdispatch (objchart. getchart (), true);} _ chart resultchart; getcha RT (chartsheet, chartno, resultchart); Note: The chartno variable indicates the chart sorting value, that is, the number of charts in a sheet, this sort value is automatically generated based on the order in which users create charts. 2. To set a curve to implement a curve, you must accurately describe the curve. The curve description is a serialized string that contains four parts separated by commas (,): 1. title.2. X-week description of the Chart 3. shows the region description of the data based on the curve. 4. some items in the curve sorting value (curve ID) in a single chart can be set. The system will take the default value. The final serialization format is as follows: = series ("example", data! $ A $4: $ a $34, data! $ C $4: $ C $34,1), you can also omit the specified X coordinate = series ("example", data! $ C $4: $ C $34,1 ). Void setchartseriessource (_ chart excelchart, short series_id, char * pparamline) {series oseries; oseries = excelchart. seriescollection (colevariant (short) series_id); oseries. setformula (pparamline);} Char szparamline [1024]; sprintf (rgnline, "= series (/" % S/", % s! $ % S $ % d: $ % S $ % d, % d) "," data ", pdataname, pcol, row, pcol, dindexrow [I], 1 ); setchartseriessource (excelchart, 1, szparamline); note: the set data should not be worthy. For example, a curve is formed based on the data region A1: a100. If the A30 position has no data (the region is empty but not zero), the program throws an exception.