如何用VC创建一个excel文档?
3个回答
展开全部
下面介绍的方法可以参考:
在Visual C中如何进行处理了利用Excel 2000的ActiveX Automate功能处理起来同VB中类似。
但要注意以下几点 对于对象的属性值的读取或赋值需要用GetProperty或SetPropertyNewValue函数不能象VB中直接通过属性名称取值或赋值。
例如Worksheet.GetCount Worksheet.SetName“Sheet1”。
对集合对象中的成员对象的引用必须使用集合对象的GetItem函数。
例如Worksheets.GetItemColeVariantlong1或Worksheets.GetItemColeVariant“Sheet1”取得第一个工作表。
在COM接口中时常用到VariantBSTRSafeArray数据类型。
Variant数据类型是一个联合可表示几乎所有的类型的数据具体用法见MSDN中的相关介绍类_variant_t是对VARIANT数据类型的封装。
在Excel 2000的VB编程帮助中如果提到某函数或属性需要一个值该值的数据类型通常是Variant在封装Excel 2000对象的类定义中说明了具体需要的数据类型。
BSTR是一个包括了字符串和字符串长度的数据结构类_bstr_t是对BSTR数据类型的封装。
在Excel 2000的VB编程帮助中提到的字符串通常指BSTR。
具体函数参数或属性的数据类型见封装该对象的类的定义。
SafeArray是一个包括数组和数组边界的结构数组边界外的内容不允许访问。
在Excel 2000的VB编程帮助中提到的数组是指SafeArray。
关于SafeArray的处理请见MSDN的相关帮助。
对于缺省参数和缺省值。
在VB中函数的参数可以空缺在VC中不允许必须将所有的参数填写完全。
如果你希望指定某个参数为缺省值根据参数数据类型的不同可指定不同的缺省值。
当参数数据类型为字符串时可以用长度为0的字符串。
如果参数是Variant类型可用常量vtMissing该常量在comdef.h中定义。
也可用_variant_tDISP_E_PARAMNOTFOUND VT_ERROR产生一个Variant对象。
Excel对象中的集合对象有时包括的子对象是不一定的例如Range对象可以表示Cell的集合也可以表示Column的集合或Row的集合Range.GetItem1可以返回Cell或Column或Row对象。
对对象的引用或传递对象使用IDispatch类对象有时利用Variant对IDispatch进行包装。
以下是一段源程序演示如何启动Excel 2000利用一个模板文件产生一个新文档在该文档的”Sheet1”工作表的第一个单元中填写一段文字设置第一列的列宽然后调用一个模板中的宏执行一段程序最后打印预览该Excel文档。
模板文件名称MyTemplate.xlt。
程序在Visual C 6.0 sp4Windows 2000 Professional sp-1下调试通过。
首先利用Visual C 6.0建立一个MFC基于对话框的工程项目共享DLLWin32平台。
工程名称ExcelTest。
在主对话框中加入一个按钮 ID IDC_EXCELTEST Caption Test Excel 双击该按钮增加成员函数void CExcelTestDlg::OnExceltest。
在BOOL CExcelTestApp::InitInstance中dlg.DoModal之前增加代码 if
CoInitializeNULL0 AfxMessageBox初始化COM支持库失败 exit1 在return FALSE 语句前加入
CoUninitialize 选择Menu-View-ClassWizade打开ClassWizade窗口选择Add Class-From a
type library选择D:Program FilesMicrosoft OfficeofficeExcel9.OLBD:Program
FilesMicrosoft Office是本机上Microsoft Office 2000的安装目录可根据个人机器上的实际安装目录修改。
选
择_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range加入新类分别为
_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range头文件Excel9.h源
文件Excel9.cpp。
在ExcelTestDlg.cpp文件的头部include
ExcelTestDlg.h语句之下增加 include comdef.h include Excel9.h 在void
CExcelTestDlg::OnExceltest 函数中增加如下代码 void CExcelTestDlg::OnExceltest
_Application ExcelApp Workbooks wbsMyBooks _Workbook wbMyBook Worksheets
wssMysheets _Worksheet wsMysheet Range rgMyRge //创建Excel 2000服务器启动Excel
if ExcelApp.CreateDispatchExcel.ApplicationNULL
AfxMessageBox创建Excel服务失败 exit1 //利用模板文件建立新文档
wbsMyBooks.AttachDispatchExcelApp.GetWorkbookstrue
wbMyBook.AttachDispatchwbsMyBooks.Add_variant_tg:exceltestMyTemplate.xlt
//得到Worksheets wssMysheets.AttachDispatchwbMyBook.GetWorksheetstrue //得到sheet1
wsMysheet.AttachDispatchwssMysheets.GetItem_variant_tsheet1true
//得到全部Cells此时rgMyRge是cells的集合
rgMyRge.AttachDispatchwsMysheet.GetCellstrue //设置1行1列的单元的值
rgMyRge.SetItem_variant_tlong1_variant_tlong1_variant_tThis Is A Excel
Test Program //得到所有的列 rgMyRge.AttachDispatchwsMysheet.GetColumnstrue
//得到第一列
rgMyRge.AttachDispatchrgMyRge.GetItem_variant_tlong1vtMissing.pdispValtrue
//设置列宽 rgMyRge.SetColumnWidth_variant_tlong200 //调用模板中预先存放的宏
ExcelApp.Run_variant_tCopyRow_variant_tlong10vtMissingvtMissing
vtMissingvtMissingvtMissingvtMissingvtMissingvtMissingvtMissing
vtMissingvtMissingvtMissingvtMissingvtMissingvtMissingvtMissing
vtMissingvtMissingvtMissingvtMissingvtMissingvtMissingvtMissing
vtMissingvtMissingvtMissingvtMissingvtMissingvtMissing //打印预览
wbMyBook.SetSavedtrue ExcelApp.SetVisibletrue
wbMyBook.PrintPreview_variant_tfalse //释放对象 rgMyRge.ReleaseDispatch
wsMysheet.ReleaseDispatch wssMysheets.ReleaseDispatch
wbMyBook.ReleaseDispatch wbsMyBooks.ReleaseDispatch
ExcelApp.ReleaseDispatch 添加完以上程序后可运行看结果。
在Visual C中如何进行处理了利用Excel 2000的ActiveX Automate功能处理起来同VB中类似。
但要注意以下几点 对于对象的属性值的读取或赋值需要用GetProperty或SetPropertyNewValue函数不能象VB中直接通过属性名称取值或赋值。
例如Worksheet.GetCount Worksheet.SetName“Sheet1”。
对集合对象中的成员对象的引用必须使用集合对象的GetItem函数。
例如Worksheets.GetItemColeVariantlong1或Worksheets.GetItemColeVariant“Sheet1”取得第一个工作表。
在COM接口中时常用到VariantBSTRSafeArray数据类型。
Variant数据类型是一个联合可表示几乎所有的类型的数据具体用法见MSDN中的相关介绍类_variant_t是对VARIANT数据类型的封装。
在Excel 2000的VB编程帮助中如果提到某函数或属性需要一个值该值的数据类型通常是Variant在封装Excel 2000对象的类定义中说明了具体需要的数据类型。
BSTR是一个包括了字符串和字符串长度的数据结构类_bstr_t是对BSTR数据类型的封装。
在Excel 2000的VB编程帮助中提到的字符串通常指BSTR。
具体函数参数或属性的数据类型见封装该对象的类的定义。
SafeArray是一个包括数组和数组边界的结构数组边界外的内容不允许访问。
在Excel 2000的VB编程帮助中提到的数组是指SafeArray。
关于SafeArray的处理请见MSDN的相关帮助。
对于缺省参数和缺省值。
在VB中函数的参数可以空缺在VC中不允许必须将所有的参数填写完全。
如果你希望指定某个参数为缺省值根据参数数据类型的不同可指定不同的缺省值。
当参数数据类型为字符串时可以用长度为0的字符串。
如果参数是Variant类型可用常量vtMissing该常量在comdef.h中定义。
也可用_variant_tDISP_E_PARAMNOTFOUND VT_ERROR产生一个Variant对象。
Excel对象中的集合对象有时包括的子对象是不一定的例如Range对象可以表示Cell的集合也可以表示Column的集合或Row的集合Range.GetItem1可以返回Cell或Column或Row对象。
对对象的引用或传递对象使用IDispatch类对象有时利用Variant对IDispatch进行包装。
以下是一段源程序演示如何启动Excel 2000利用一个模板文件产生一个新文档在该文档的”Sheet1”工作表的第一个单元中填写一段文字设置第一列的列宽然后调用一个模板中的宏执行一段程序最后打印预览该Excel文档。
模板文件名称MyTemplate.xlt。
程序在Visual C 6.0 sp4Windows 2000 Professional sp-1下调试通过。
首先利用Visual C 6.0建立一个MFC基于对话框的工程项目共享DLLWin32平台。
工程名称ExcelTest。
在主对话框中加入一个按钮 ID IDC_EXCELTEST Caption Test Excel 双击该按钮增加成员函数void CExcelTestDlg::OnExceltest。
在BOOL CExcelTestApp::InitInstance中dlg.DoModal之前增加代码 if
CoInitializeNULL0 AfxMessageBox初始化COM支持库失败 exit1 在return FALSE 语句前加入
CoUninitialize 选择Menu-View-ClassWizade打开ClassWizade窗口选择Add Class-From a
type library选择D:Program FilesMicrosoft OfficeofficeExcel9.OLBD:Program
FilesMicrosoft Office是本机上Microsoft Office 2000的安装目录可根据个人机器上的实际安装目录修改。
选
择_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range加入新类分别为
_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range头文件Excel9.h源
文件Excel9.cpp。
在ExcelTestDlg.cpp文件的头部include
ExcelTestDlg.h语句之下增加 include comdef.h include Excel9.h 在void
CExcelTestDlg::OnExceltest 函数中增加如下代码 void CExcelTestDlg::OnExceltest
_Application ExcelApp Workbooks wbsMyBooks _Workbook wbMyBook Worksheets
wssMysheets _Worksheet wsMysheet Range rgMyRge //创建Excel 2000服务器启动Excel
if ExcelApp.CreateDispatchExcel.ApplicationNULL
AfxMessageBox创建Excel服务失败 exit1 //利用模板文件建立新文档
wbsMyBooks.AttachDispatchExcelApp.GetWorkbookstrue
wbMyBook.AttachDispatchwbsMyBooks.Add_variant_tg:exceltestMyTemplate.xlt
//得到Worksheets wssMysheets.AttachDispatchwbMyBook.GetWorksheetstrue //得到sheet1
wsMysheet.AttachDispatchwssMysheets.GetItem_variant_tsheet1true
//得到全部Cells此时rgMyRge是cells的集合
rgMyRge.AttachDispatchwsMysheet.GetCellstrue //设置1行1列的单元的值
rgMyRge.SetItem_variant_tlong1_variant_tlong1_variant_tThis Is A Excel
Test Program //得到所有的列 rgMyRge.AttachDispatchwsMysheet.GetColumnstrue
//得到第一列
rgMyRge.AttachDispatchrgMyRge.GetItem_variant_tlong1vtMissing.pdispValtrue
//设置列宽 rgMyRge.SetColumnWidth_variant_tlong200 //调用模板中预先存放的宏
ExcelApp.Run_variant_tCopyRow_variant_tlong10vtMissingvtMissing
vtMissingvtMissingvtMissingvtMissingvtMissingvtMissingvtMissing
vtMissingvtMissingvtMissingvtMissingvtMissingvtMissingvtMissing
vtMissingvtMissingvtMissingvtMissingvtMissingvtMissingvtMissing
vtMissingvtMissingvtMissingvtMissingvtMissingvtMissing //打印预览
wbMyBook.SetSavedtrue ExcelApp.SetVisibletrue
wbMyBook.PrintPreview_variant_tfalse //释放对象 rgMyRge.ReleaseDispatch
wsMysheet.ReleaseDispatch wssMysheets.ReleaseDispatch
wbMyBook.ReleaseDispatch wbsMyBooks.ReleaseDispatch
ExcelApp.ReleaseDispatch 添加完以上程序后可运行看结果。
2018-07-30 · 知道合伙人软件行家
关注
展开全部
下面介绍的方法可以参考:
在Visual C中如何进行处理了利用Excel 2000的ActiveX Automate功能处理起来同VB中类似。
但要注意以下几点 对于对象的属性值的读取或赋值需要用GetProperty或SetPropertyNewValue函数不能象VB中直接通过属性名称取值或赋值。
例如Worksheet.GetCount Worksheet.SetName“Sheet1”。
对集合对象中的成员对象的引用必须使用集合对象的GetItem函数。
例如Worksheets.GetItemColeVariantlong1或Worksheets.GetItemColeVariant“Sheet1”取得第一个工作表。
在COM接口中时常用到VariantBSTRSafeArray数据类型。
Variant数据类型是一个联合可表示几乎所有的类型的数据具体用法见MSDN中的相关介绍类_variant_t是对VARIANT数据类型的封装。
在Excel 2000的VB编程帮助中如果提到某函数或属性需要一个值该值的数据类型通常是Variant在封装Excel 2000对象的类定义中说明了具体需要的数据类型。
BSTR是一个包括了字符串和字符串长度的数据结构类_bstr_t是对BSTR数据类型的封装。
在Excel 2000的VB编程帮助中提到的字符串通常指BSTR。
具体函数参数或属性的数据类型见封装该对象的类的定义。
SafeArray是一个包括数组和数组边界的结构数组边界外的内容不允许访问。
在Excel 2000的VB编程帮助中提到的数组是指SafeArray。
关于SafeArray的处理请见MSDN的相关帮助。
对于缺省参数和缺省值。
在Visual C中如何进行处理了利用Excel 2000的ActiveX Automate功能处理起来同VB中类似。
但要注意以下几点 对于对象的属性值的读取或赋值需要用GetProperty或SetPropertyNewValue函数不能象VB中直接通过属性名称取值或赋值。
例如Worksheet.GetCount Worksheet.SetName“Sheet1”。
对集合对象中的成员对象的引用必须使用集合对象的GetItem函数。
例如Worksheets.GetItemColeVariantlong1或Worksheets.GetItemColeVariant“Sheet1”取得第一个工作表。
在COM接口中时常用到VariantBSTRSafeArray数据类型。
Variant数据类型是一个联合可表示几乎所有的类型的数据具体用法见MSDN中的相关介绍类_variant_t是对VARIANT数据类型的封装。
在Excel 2000的VB编程帮助中如果提到某函数或属性需要一个值该值的数据类型通常是Variant在封装Excel 2000对象的类定义中说明了具体需要的数据类型。
BSTR是一个包括了字符串和字符串长度的数据结构类_bstr_t是对BSTR数据类型的封装。
在Excel 2000的VB编程帮助中提到的字符串通常指BSTR。
具体函数参数或属性的数据类型见封装该对象的类的定义。
SafeArray是一个包括数组和数组边界的结构数组边界外的内容不允许访问。
在Excel 2000的VB编程帮助中提到的数组是指SafeArray。
关于SafeArray的处理请见MSDN的相关帮助。
对于缺省参数和缺省值。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//创建数据库,即一个Excel的XLS文件
ConnStr
=
"Driver={Microsoft
Excel
Driver
(*.xls)};DBQ="+FileName+";";
ADOConnection->ConnectionString
=
WideString(ConnStr);
ADOConnection->Open();
//
//创建表,创建成功后再Xls文件中就能看见...
ConnStr
=
"Driver={Microsoft
Excel
Driver
(*.xls)};DBQ="+FileName+";";
ADOConnection->ConnectionString
=
WideString(ConnStr);
ADOConnection->Open();
//
//创建表,创建成功后再Xls文件中就能看见...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询