用c++如何将将图片存储到数据库存到Excel

C++读写excel表格数据(LibXL for Windows)v3.6.5破解版下载_libxl3.6完美破解补丁_飞翔下载
单机游戏下载单机游戏下载基地
当前位置: →
→ C++读写excel表格数据(LibXL for Windows) v3.6.5破解版
需要操纵Excel,又不想用 ADO/ODBC/COM 等方式。于是搜索到了LibXL。LibXL for Windows&3.6.5破解版是在官方最新版本上使用破解补丁进行破解的,保证可以使用。破解方法1、破解版可以读取超过100行,第一行没有logo。里面包含使用说明,包括头文件和库文件引用方法。2、关于Libxl,对于03版本的xls文件,读写起来中文支持都比较好,不使用unicode编码就可以很好实现,这个例子可以看官网的例子。而对于07版本的xlsx文件,必须使用unicode编码才可以进行。上面给的下载链接里的cpp文件主要是实现了读取xlsx文件中的中文。注意事项网上搜索 LibXL 的 &破解版&, 找到很多所谓的 “&完美破解版&” ,试用一下, 网上搜索出来的,并不完美,会随机出现&“buy me!”&字符串
安卓官方手机版
IOS官方手机版
C++读写excel表格数据(LibXL for Windows) v3.6.5破解版
本类软件分类
装机必备软件天极传媒:天极网全国分站
您现在的位置:
& >>C++将DBGrid中数据导出到Word和Excel
C++将DBGrid中数据导出到Word和Excel
     
  经常看到有网友发帖子询问如何将DBGrid中的内容导出到Excel或Word文档中,于是笔者花了点时间写了以下两个函数,分别实现将DBGrid中数据导出到Word和Excel文档。需要注意的是DBGrid中的数据并不代表中所有的数据,因为数据集在打开的时候有可能进行了筛选,取决于使用者如何打开这个数据集,总之就是DBGrid中显示多少数据,就导出多少。   一、将DBGrid中的内容导出到Word文档
//---------------------------------------------------------------------------// 将DBGrid中的数据导出到Word文档//---------------------------------------------------------------------------void __fastcall DBGrid2Word(TDBGrid *dbg, String strDocFile){ if(!dbg-&DataSource-&DataSet-&Active) // 数据集没有打开就返回   Variant vWordApp, vTable, vC try {  vWordApp = Variant::CreateObject("Word.Application"); } catch(...) {  MessageBox(0, "启动 Word 出错, 可能是没有安装Word.","DBGrid2Word", MB_OK | MB_ICONERROR);  vWordApp = U   } // 隐藏Word界面 vWordApp.OlePropertySet("Visible", false); // 新建一个文档 vWordApp.OlePropertyGet("Documents").OleFunction("Add"); Variant vSelect = vWordApp.OlePropertyGet("Selection"); // 设置一下字体,大小 vSelect.OlePropertyGet("Font").OlePropertySet("Size", dbg-&Font-&Size); vSelect.OlePropertyGet("Font").OlePropertySet("Name", dbg-&Font-&Name.c_str()); // 要插入表格的行数 int nRowCount(dbg-&DataSource-&DataSet-&RecordCount + 1); nRowCount = nRowCount & 2? 2: nRowC // 要插入表格的列数 int nColCount(dbg-&Columns-&Count); nColCount = nColCount & 1? 1: nColC // 在Word文档中插入与DBGrid行数列数基本相同的一个表格 vWordApp.OlePropertyGet("ActiveDocument").OlePropertyGet("Tables").OleProcedure("Add",   vSelect.OlePropertyGet("Range"),   nRowCount, // 行数   nColCount, // 列数   1, // DefaultTableBehavior:=wdWord9TableBehavior   0); // AutoFitBehavior:=wdAutoFitFixed // 操作这个表格 vTable = vWordApp.OlePropertyGet("ActiveDocument"). OleFunction("Range").OlePropertyGet("Tables").OleFunction("Item", 1); // 设置单元格的宽度 for(int i=0; i&nColC i++) {  int nColWidth = dbg-&Columns-&Items[i]-&W  vTable.OlePropertyGet("Columns").OleFunction("Item", i + 1)    .OlePropertySet("PreferredWidthType", 3); // wdPreferredWidthPoints  vTable.OlePropertyGet("Columns").OleFunction("Item", i + 1)    .OlePropertySet("PreferredWidth", nColWidth); } // 先将列名写入Word表格 for(int j=0; j&dbg-&Columns-&C j++) {  vCell = vTable.OleFunction("Cell", 1, j + 1);  vCell.OlePropertySet("Range", dbg-&Columns-&Items[j]-&FieldName.c_str());  // 列名单元格背景颜色 // wdColorGray125  vCell.OlePropertyGet("Shading").OlePropertySet("BackgroundPatternColor", ); } // 将DBGrid中的数据写入Word表格 dbg-&DataSource-&DataSet-&First(); for(int i=0; i&nRowC i++) {  // 63 63 72 75 6E 2E 63 6F 6D  for(int j=0; j&dbg-&Columns-&C j++)  {   vCell = vTable.OleFunction("Cell", i + 2, j + 1);   vCell.OlePropertySet("Range",    dbg-&DataSource-&DataSet-&FieldByName(     dbg-&Columns-&Items[j]-&FieldName)-&AsString.c_str());  }  dbg-&DataSource-&DataSet-&Next(); } // 保存Word文档并退出 vWordApp.OlePropertyGet("ActiveDocument").OleProcedure("SaveAs", strDocFile.c_str()); vWordApp.OlePropertyGet("ActiveDocument").OleProcedure("Close"); Application-&ProcessMessages(); vWordApp.OleProcedure("Quit"); Application-&ProcessMessages(); vWordApp = U // 工作结束 MessageBox(0, "DBGrid2Word 转换结束!","DBGrid2Word", MB_OK | MB_ICONINFORMATION);}  二、将DBGrid中的内容导出到Excel文档
//---------------------------------------------------------------------------// 将DBGrid中的数据导出到Excel文档//---------------------------------------------------------------------------void __fastcall DBGrid2Excel(TDBGrid *dbg, String strXlsFile){ if(!dbg-&DataSource-&DataSet-&Active) // 数据集没有打开就返回   Variant vExcelApp, vS try {  vExcelApp = Variant::CreateObject("Excel.Application"); } catch(...) {  MessageBox(0, "启动 Excel 出错, 可能是没有安装Excel.","DBGrid2Excel", MB_OK | MB_ICONERROR);   } // 隐藏Excel界面 vExcelApp.OlePropertySet("Visible", false); // 新建一个工作表 vExcelApp.OlePropertyGet("Workbooks").OleFunction("Add", 1); // 工作表 // 操作这个工作表 vSheet = vExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets", 1); // 设置Excel文档的字体 vSheet.OleProcedure("Select"); vSheet.OlePropertyGet("Cells").OleProcedure("Select"); vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Size", dbg-&Font-&Size); vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Name",dbg-&Font-&Name.c_str()); vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("FontStyle", "常规"); vSheet.OlePropertyGet("Cells", 1, 1).OleProcedure("Select"); // 表格的行数 int nRowCount(dbg-&DataSource-&DataSet-&RecordCount + 1); nRowCount = nRowCount & 2? 2: nRowC // 表格的列数 int nColCount(dbg-&Columns-&Count); nColCount = nColCount & 1? 1: nColC // 设置单元格的宽度 for(int i=0; i&nColC i++) {  int nColWidth = dbg-&Columns-&Items[i]-&W  vExcelApp.OlePropertyGet("Columns", i + 1).OlePropertySet("ColumnWidth", nColWidth / 7); } // 先将列名写入Excel表格 for(int j=0; j&dbg-&Columns-&C j++) {  // 标题行的行高  vExcelApp.OlePropertyGet("Rows", 1).OlePropertySet("RowHeight", 20);  vSheet.OlePropertyGet("Cells", 1, j + 1)   .OlePropertySet("Value", dbg-&Columns-&Items[j]-&FieldName.c_str());  // 设置列名单元格的背景色  Variant vInter = vSheet.OlePropertyGet( "Cells", 1, j + 1).OlePropertyGet("Interior");  vInter.OlePropertySet("ColorIndex", 15); // 灰色  vInter.OlePropertySet("Pattern", 1); // xlSolid  vInter.OlePropertySet("PatternColorIndex", -4105); // xlAutomatic } // 将DBGrid中的数据写入Excel表格 dbg-&DataSource-&DataSet-&First(); for(int i=0; i&nRowC i++) {  // 普通数据行的行高16  vExcelApp.OlePropertyGet("Rows", i + 2).OlePropertySet("RowHeight", 16);  // 63 63 72 75 6E 2E 63 6F 6D  for(int j=0; j&dbg-&Columns-&C j++)  {   vSheet.OlePropertyGet("Cells", i + 2, j + 1).OlePropertySet("Value",     dbg-&DataSource-&DataSet-&FieldByName(      dbg-&Columns-&Items[j]-&FieldName)-&AsString.c_str());  }  dbg-&DataSource-&DataSet-&Next(); } // 保存Excel文档并退出 vExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("SaveAs", strXlsFile.c_str()); vExcelApp.OleFunction("Quit"); vSheet = U vExcelApp = U // 工作结束 MessageBox(0, "DBGrid2Excel 转换结束!","DBGrid2Excel", MB_OK | MB_ICONINFORMATION);}###adv###
(作者:MOLLY编译责任编辑:方舟)
天极新媒体&最酷科技资讯扫码赢大奖
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
办公软件IT新闻整机C++读写Excel的实现方法详解
转载 &更新时间:日 15:54:42 & 作者:
本篇文章是对C++读写Excel的实现方法进行了详细的分析介绍,需要的朋友参考下
1.导入Excel类型库使用Visual C++的扩展指令#import导入Excel类型库: 代码如下:#import "C:\\Program Files\\Common Files\\microsoft shared\\OFFICE14\\MSO.DLL" \ &&& rename("RGB","MsoRGB") \ &&& rename("SearchPath","MsoSearchPath") #import "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB" #import "C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE" \ &&& rename( "DialogBox", "ExcelDialogBox" ) \ &&& rename( "RGB", "ExcelRGB" ) \ &&& rename( "CopyFile", "ExcelCopyFile" ) \ &&& rename( "ReplaceText", "ExcelReplaceText" ) \ &&& exclude( "IFont", "IPicture" ) no_dual_interfaces #import指令会从指定的可执行文件,动态链接库等COM组件中导出类型库(type lib),在Debug和Release临时目录中生成对应的类型库头文件(type lib header file),以供C++程序使用。如以上三条指令在编译后会生成excel.tlh, mso.lh和vbetext.olb三个头文件,可以在Debug和Release目录中找到。2.访问Excel暴露的COM对象下面是一段比较完整的访问Excel的实例代码。首先用生成的数据填充单元格,然后用这些单元格的数据生成了一个图表(Chart): 代码如下:try{ &&& Excel::_ApplicationPtr pExcelA &&& HRESULT hr = pExcelApp.CreateInstance(L"Excel.Application"); &&& ATLASSERT(SUCCEEDED(hr)); &&& pExcelApp-&Visible =&& // make Excel's main window visible &&& Excel::_WorkbookPtr pWorkbook = pExcelApp-&Workbooks-&Open(lpszPathName);& // open excel file &&& Excel::_WorksheetPtr pWorksheet = pWorkbook-&ActiveS &&& pWorksheet-&Name = L"Chart Data"; &&& Excel::RangePtr pRange = pWorksheet-&C &&& const int nplot = 100; &&& const double xlow = 0.0, xhigh = 20.0; &&& double h = (xhigh-xlow)/(double) &&& pRange-&Item[1][1] = L"x";& // read/write cell's data &&& pRange-&Item[1][2] = L"f(x)"; &&& for (int i=0;i&++i) &&& { &&&&&&& double x = xlow+i*h; &&&&&&& pRange-&Item[i+2][1] = &&&&&&& pRange-&Item[i+2][2] = sin(x)*exp(-x); &&& } &&& Excel::RangePtr pBeginRange = pRange-&Item[1][1]; &&& Excel::RangePtr pEndRange = pRange-&Item[nplot+1][2]; &&& Excel::RangePtr pTotalRange =& &&&&&&& pWorksheet-&Range[(Excel::Range*)pBeginRange][(Excel::Range*)pEndRange]; &&& Excel::_ChartPtr pChart = pExcelApp-&ActiveWorkbook-&Charts-&Add(); &&& // refer to : &&& // http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.chart.chartwizard(v=vs.80).aspx &&& pChart-&ChartWizard( &&&&&&& (Excel::Range*)pTotalRange, &&&&&&& (long)Excel::xlXYScatter, &&&&&&& 6L, &&&&&&& (long)Excel::xlColumns, &&&&&&& 1L,1L, &&&&&&& true, &&&&&&& L"My Graph", &&&&&&& L"x",L"f(x)"); &&& pChart-&Name = L"My Data Plot"; &&& pWorkbook-&Close(VARIANT_TRUE);& // save changes &&& pExcelApp-&Quit(); } catch (_com_error& error) { &&& ATLASSERT(FALSE); &&& ATLTRACE2(error.ErrorMessage()); }在这段代码中,Excel::_ApplicationPtr , Excel::_WorkbookPtr 和 Excel::_WorksheetPtr 等均是Visual C++ 编译器根据#import指令自动生成的智能指针,实际上就是C++模板类_com_ptr_t&T&的typedef,其定义可在excel.tlh等类型库头文件中找到。另外,由于#import指令中没有指定raw_interface_only修饰符,Visual C++对Excel的COM接口进行了适当的封装,以简化COM接口属性和方法的调用,并且将HRESULT返回值都转换成了C++异常,因此,上面的这段代码不需要每一步都坚持HRESULT,而是改为捕获C++异常。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具使用C++ 将数据导入excel_百度经验
&&&&&&&&&电脑软件使用C++ 将数据导入excel听语音123456
百度经验:jingyan.baidu.com今天的这篇经验和大家聊一聊关于使用C++ 将数据导入excel的问题,希望能够帮助到有需要的朋友。百度经验:jingyan.baidu.com1设置环境:Windows7Microsoft Visual Studio 2010Microsoft Office Excel 2003&说明:用的公司的电脑,操作系统和软件都是正版的。&2新建C++工程新建自己的C++工程。添加Excel类库在工程名上右键,选择Add---Class,选择MFC Class From TypeLib,如图:&&然后添加如图的几个类。&3修改头文件进入刚添加进来的几个类头文件中将#import开头的这句注掉&&&修改提示的错误将修改过的工程编译一下,出现如下错误:&双击提示,在DialogBox()前加下划线,如图:&4添加头文件在使用导出功能的文件中添加头文件:使用Excel类库提供的函数将需要导出的数据导出为.xls文件经过以上几步,现在可以使用Excel类库提供的函数导出数据了。&与网上许多文章相对比一下,导出流程一样。只不过类库函数有所改变。函数名由Get改为get_,Set改为put_。&5导出附录一:&&&&&& 导出Excel格式的简单流程CFileDialog dlg(FALSE,_T(&(*.xls)&),NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,&_T(&(*.xls)|*.xls||&),NULL);if (dlg.DoModal() == IDOK){//获取路径CString strFileName=dlg.GetPathName();& & & & &COleVariant&&&&&&&&&&&&& covTrue((short)TRUE),&&&&&&&&&&&&& covFalse((short)FALSE),&&&&&&&&&&&&& covOptional((long)DISP_E_PARAMNOTFOUND,&& VT_ERROR);&&&&&&& CApplication0&&&&&& CWorkbook0&&&&&& CWorkbooks0&&&&&& CWorksheet0&&&&&& CWorksheets0&&&&&& CRange0&&&&&& CFont1&&&&&& if (!app.CreateDispatch(_T(&Excel.Application&)))&&&&&& {&&&&&&&&&&&&& MessageBox(_T(&Error!&));&&&&&& }&&&&&&& books = app.get_Workbooks();&&&&&& book = books.Add(covOptional);&&&&&&& sheets = book.get_Worksheets();&&&&&& sheet = sheets.get_Item(COleVariant((short)1));&&&&&& range&& =&& sheet.get_Range(COleVariant(_T(&A1&)),COleVariant(_T(&A1&)));&&&&&& range.put_Value2(COleVariant(_T(&hanhan&)));&&&&&&& book.SaveCopyAs(COleVariant(strFileName));&&&&&& book.put_Saved(true);&&&&&& book.ReleaseDispatch();&&&&&&&& books.ReleaseDispatch();&&&&&&&& app.Quit();&&&&&& app.ReleaseDispatch();}6&附录二:将ListCtrl中的数据导出为Excel格式&&&&&& CString strFile = _T(&E:\\Test.xls&);&&&&&&&& COleVariant&&&&&&&&&&&&&&&&&& covTrue((short)TRUE),&&&&&&&&&&&&&&&&&& covFalse((short)FALSE),&&&&&&&&&&&&&&&&&& covOptional((long)DISP_E_PARAMNOTFOUND,&& VT_ERROR);&&&&&&&& CApplication&&&&&&&&&& CWorkbooks&&&&&&&&&& CWorkbook&&&&&&&&&& CWorksheets&&&&&&&&&& CWorksheet&&&&&&&&&& CRange&&&&&&&&&& CFont0&&&&&&&&&&& if (!app.CreateDispatch(_T(&Excel.Application&)))&&&&&&&& {&&&&&&&&&&&&&&&&&& MessageBox(_T(&创建失败!&));&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&& //Get&& a&& new&& workbook.&&&&&&&& books = app.get_Workbooks();&&&&&&&& book = books.Add(covOptional);&&&&&&&&& sheets = book.get_Worksheets();&&&&&&&& sheet = sheets.get_Item(COleVariant((short)1));&&&&&&&&& ////////////////////////////////////CListCtrl控件report风格//////////////////////////////////////////////////////////&&&&&&&& CHeaderCtrl&& *pmyHeaderC&&&&&&&& pmyHeaderCtrl = m_clcData.GetHeaderCtrl();//此句取得CListCtrl控件的列表頭&&&&&&&&& int&& iRow,iC&&&&&&&& int&& m_cols&& =&& pmyHeaderCtrl-& GetItemCount();&&&&&&&& int&& m_rows = m_clcData.GetItemCount();&&&&&&&& HDITEM&&&&&&&&&& TCHAR&&&& lpBuffer[256];&&&&&&&& bool&&&&&& fFound&& =&&&&&&&&&&& hdi.mask&& =&& HDI_TEXT;&&&&&&&& hdi.pszText&& =&& lpB&&&&&&&& hdi.cchTextMax&& =&& 256;&&&&&&&& CString&&&&&&&&&& CString strT&&&&&&&& for(iCol=0;&& iCol &m_&& iCol++)//将列表的标题头写入EXCEL&&&&&&&& {&&&&&&&&&&&&&&&&&& GetCellName(1 ,iCol + 1, colname);&&&&&&&&&&&&&&&&&& range&& =&& sheet.get_Range(COleVariant(colname),COleVariant(colname));&&&&&&&&&&&&&&&&&& pmyHeaderCtrl-& GetItem(iCol,&& &hdi);&&&&&&&&&&&&&&&&&& range.put_Value2(COleVariant(hdi.pszText));&&&&&&&&&&&&&&&&&& int&& nWidth&& =&& m_clcData.GetColumnWidth(iCol)/6;&&&&&&&&&&&&&&&&&& //得到第iCol+1列&&&&&&&&&&&&&&&&&&&& range.AttachDispatch(range.get_Item(_variant_t((long)(iCol+1)),vtMissing).pdispVal,true);&&&&&&&&&&&&&&&&&&&& //设置列宽&&&&&&&&&&&&&&&&&&& range.put_ColumnWidth(_variant_t((long)nWidth));&&&&&&&& }&&&&&&&& range&& =&& sheet.get_Range(COleVariant( _T(&A1 &)),&& COleVariant(colname));&&&&&&&& range.put_RowHeight(_variant_t((long)50));//设置行的高度&&&&&&&& font = range.get_Font();&&&&&&&& font.put_Bold(covTrue);&&&&&&&& range.put_VerticalAlignment(COleVariant((short)-4108));//xlVAlignCenter&& =&& -4108&&&&&&&&& COleSafeArray&& saR&&&&&&&& DWORD&& numElements[]={m_rows,m_cols};&&&&&& //5x2&& element&& array&&&&&&&& saRet.Create(VT_BSTR,&& 2,&& numElements);&&&&&&&& range&& =&& sheet.get_Range(COleVariant( _T(&A2 &)),covOptional);&&&&&&&& range = range.get_Resize(COleVariant((short)m_rows),COleVariant((short)m_cols));&&&&&&&& long&& index[2];&&&&&&&& range&& =&& sheet.get_Range(COleVariant( _T(&A2 &)),covOptional);&&&&&&&& range&& =&& range.get_Resize(COleVariant((short)m_rows),COleVariant((short)m_cols));&&&&&&&& for&& (&& iRow&& =&& 1;&& iRow&& &=&& m_&& iRow++)//将列表内容写入EXCEL&&&&&&&& {&&&&&&&&&&&&&&&&&& for&& (&& iCol&& =&& 1;&& iCol&& &=&& m_&& iCol++)&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& index[0]=iRow-1;&&&&&&&&&&&&&&&&&&&&&&&&&&& index[1]=iCol-1;&&&&&&&&&&&&&&&&&&&&&&&&&&& CString&& szT&&&&&&&&&&&&&&&&&&&&&&&&&&& szTemp=m_clcData.GetItemText(iRow-1,iCol-1);&&&&&&&&&&&&&&&&&&&&&&&&&&& BSTR&& bstr&& =&& szTemp.AllocSysString();&&&&&&&&&&&&&&&&&&&&&&&&&&& saRet.PutElement(index,bstr);&&&&&&&&&&&&&&&&&&&&&&&&&&& SysFreeString(bstr);&&&&&&&&&&&&&&&&&& }&&&&&&&& }&&&&&&&&& range.put_Value2(COleVariant(saRet));&//&&&&&& C//&&&&&& range&& =&& sheet.get_Range(COleVariant( _T(&A1 &)),covOptional);//&&&&&& range&& =&& range.get_Resize(COleVariant((short)1),COleVariant((short)m_cols));//&&&&&& books = range.get_Interior();//&&&&&& cellinterior.AttachDispatch(books);//&&&&&& cellinterior.put_ColorIndex(COleVariant((short)37));//设置EXCEL头一行的背景颜色//&&&&&& for(&& iRow=1;&& iRow&& &=&& m_&& iRow++)//设置EXCEL其余的背景颜色(颜色交替变换)//&&&&&& {//&&&&&&&&&&&&&&&& int&& state=iRow%2;//&&&&&&&&&&&&&&&& CString&&//&&&&&&&&&&&&&&&& index.Format( _T(&A%d &),iRow+1);//&&&&&&&&&&&&&&&& range&& =&& sheet.get_Range(COleVariant(index),covOptional);//&&&&&&&&&&&&&&&& range&& =&& range.get_Resize(COleVariant((short)1),COleVariant((short)m_cols));//&&&&&&&&&&&&&&&& books=range.get_Interior();//&&&&&&&&&&&&&&&& cellinterior.AttachDispatch(books);//&&&&&&&&&&&&&&&& if(!state)//&&&&&&&&&&&&&&&&&&&&&&&&& cellinterior.put_ColorIndex(COleVariant((short)36));//&&&&&&&&&&&&&&&& else//&&&&&&&&&&&&&&&&&&&&&&&&& cellinterior.put_ColorIndex(COleVariant((short)24));//&&&&&& }&&&&&&&&& saRet.Detach();//////////////////////////////////////////////////////////////////////////////////////////////////////////////////&&&&&&&&& book.SaveCopyAs(COleVariant(strFile));//&&&&&& cellinterior.ReleaseDispatch();&&&&&&&& book.put_Saved(true);&&&&&&&& book.ReleaseDispatch();&&&&&&&&&& books.ReleaseDispatch();&&&&&&&&&& app.Quit();&&&&&&&& app.ReleaseDispatch();&由于不需要,Excel单元格样式及颜色等属性设置没有做,有兴趣的可以自己去试试。代码中设置的有错。&自己写的一个获取单元头的函数:void&& GetCellName(int nRow, int nCol, CString &strName){&&&&&&&& int nSeed = nC&&&&&&&& CString strR&&&&&&&& char cCell = 'A' + nCol - 1;&&&&&&&&& strName.Format(_T(&%c&), cCell);&&&&&&&&& strRow.Format(_T( &%d &), nRow);&&&&&&&& strName += strR}三、导入HRESULT&hr = CoInitialize(NULL);&if(FAILED(hr))&{&AfxMessageBox(_T(&Failed to call Coinitialize()& ));&}CFileDialog &filedlg(TRUE,L&*.xls&,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,L&Xls文件 (*.xls)|*.xls&); &filedlg.m_ofn.lpstrTitle=L&打开文件&;CString strFilePif (IDOK==filedlg.DoModal()){strFilePath=filedlg.GetPathName();}&else{}//////////////////////////////////////////////////////////////////////////CACWCWCWCWCRLPDISPATCH lpD//定义变量COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);if (!app.CreateDispatch(_T(&Excel.Application&),NULL)){this-&MessageBox(_T(&无法创建Excel应用&));}books = app.get_Workbooks();//打开Excel,其中pathname为Excel表的路径名lpDisp = books.Open(strFilePath,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);book.AttachDispatch(lpDisp);sheets = book.get_Worksheets();sheet = sheets.get_Item(COleVariant((short)1));//app.put_Visible(TRUE); //表格可见//app.put_UserControl(FALSE);&////获得坐标为(A,1)的单元格/*range = sheet.get_Range(COleVariant(_T(&A1&)),COleVariant(_T(&A1&)));*/////获得单元格的内容//COleVariant rVrValue =&// COleVariant(range.get_Value2());////转换成宽字符//rValue.ChangeType(VT_BSTR);////转换格式,并输出//this-&MessageBox(CString(rValue.bstrVal));/*读取Excel表中的多个单元格的值,在listctrl中显示*/COleVariant vR//读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列range.AttachDispatch(sheet.get_UsedRange());range.AttachDispatch(range.get_Rows());//取得已经使用的行数long iRowNum = range.get_Count(); & & & &&range.AttachDispatch(range.get_Columns());//取得已经使用的列数long iColNum = range.get_Count(); & & & &&//取得已使用区域的起始行,从1开始long iStartRow = range.get_Row();//取得已使用区域的起始列,从1开始long iStartCol = range.get_Column();for(int i=iStartRi&=iRowNi++){/*CString strRowName = _T(&&);strRowName.Format(_T(&%d&), i);m_ListCtrl.InsertItem(i-1, strRowName);*/for(int j=iStartCj&=iColNj++){//读取单元格的值range.AttachDispatch(sheet.get_Cells());range.AttachDispatch(range.get_Item(COleVariant((long)i),COleVariant((long)j)).pdispVal);vResult = range.get_Value2();CString str,stry,strm,SYSTEMTIMEif(vResult.vt == VT_BSTR) & & //若是字符串{str = vResult.bstrV}else if (vResult.vt == VT_R8) //8字节的数字{str.Format(L&%f&,vResult.dblVal);}else if(vResult.vt == VT_DATE) //时间格式{VariantTimeToSystemTime(vResult.date, &st);stry.Format(L&%d&,st.wYear);strm.Format(L&%d&,st.wMonth);strd.Format(L&%d&,st.wDay);str = stry+L&-&+strm+L&-&+}else if(vResult.vt == VT_EMPTY) //单元为空{str=L&&;}else if (vResult.vt ==VT_I4){str.Format(_T(&%ld&), (int)vResult.lVal);}// m_ListCtrl.SetItemText(i-1, j, str);}}/*释放资源*/range.ReleaseDispatch();sheet.ReleaseDispatch();sheets.ReleaseDispatch();book.ReleaseDispatch();books.ReleaseDispatch();app.Quit();app.ReleaseDispatch();END百度经验:jingyan.baidu.com以上内容来自于互联网经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(0)已投票(0)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验22000热门杂志第1期你不知道的iPad技巧3784次分享第1期win7电脑那些事6630次分享第2期新人玩转百度经验1400次分享第1期Win8.1实用小技巧2651次分享第1期小白装大神1911次分享◆请扫描分享到朋友圈

我要回帖

更多关于 js将数据保存到cookie 的文章

 

随机推荐