谁会用代码生成一个Excel文件? 使得该文件与右键-->新建-->Excel工作表 生成的文件一样?CFile execfile;
execfile.Open(path,CFile::modeCreate);这种方法是不行的,它生成的大小为0,右键...生成的有十几K大小.OLE生成方式:先生成几个CFile型的.xls文件,再用Workbooks的Add方法添加到Excel 框架中去,效果也很差.请比较有经验的人指教一下,不然该帖又要无果而终了.
execfile.Open(path,CFile::modeCreate);这种方法是不行的,它生成的大小为0,右键...生成的有十几K大小.OLE生成方式:先生成几个CFile型的.xls文件,再用Workbooks的Add方法添加到Excel 框架中去,效果也很差.请比较有经验的人指教一下,不然该帖又要无果而终了.
解决方案 »
- CToolTipCtrl在vc6.0和2005里的区别!
- 外包一个播放器界面,承接者最好是北京的
- 求解曲面曲率的问题,请各位高手帮忙解答!
- 绘制MDI客户视?在线等!
- 如何可以得到一个应用程序中的ListCtrl的Item count?
- 王卫星进来看看
- 怎样改变标题栏上的 mfc的图标
- 到 http://www.xbit2008.com 看看技术文章把! 我写的或从网上摘的!
- 程序中如何把某个文件拷贝到另一台机器上(该机器不开完全共享)?
- 哪里有截获IP包的免费VC源代码下载,第一个打对的拿所有分。
- 用XML+JavaScript来定制UI,软件的扩展性和可定制性空前增强...
- 怎么更改程序图标?
但是有内存泄露问题
Microsoft Office Excel 2003 中的 Workbooks 集合使您可以使用所有打开的工作簿、创建新的工作簿以及向新的工作簿中导入数据。创建新工作簿 使用 Workbooks 集合的 Add 方法:
' Visual Basic
Dim wb As Excel.Workbook = ThisApplication.Workbooks.Add()// C#
Excel.Workbook workbook = ThisApplication.Workbooks.Add(Type.Missing);
也可以将工作簿模板的名称指定为 Add 方法的参数。
可以向 Microsoft Office Excel 2003 工作簿中添加新工作表,或创建现有工作表的副本。Add 方法允许您向工作簿中的工作表集合中添加新工作表。向工作簿中添加新工作表 使用 Sheets 集合的 Add 方法:
' Visual Basic
Dim sh As Excel.Worksheet
sh = ThisWorkbook.Worksheets.Add()// C#
Excel.Worksheet newWorkSheet;
newWorkSheet =
(Excel.Worksheet)ThisWorkbook.Worksheets.Add(
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Copy 方法创建工作表的副本,并将该工作表插入到您指定的位置。如果愿意,您可以指定将新工作表插到现有工作表的前面或后面。如果不指定,Excel 将创建一个新工作簿来容纳该新的工作表。 向工作簿中添加复制的工作表 以下代码复制当前工作簿中的第一个工作表,并将副本置于第三个工作表后面。
' Visual Basic
ThisApplication.ActiveWorkbook.Sheets(1).Copy( _
After:=ThisApplication.ActiveWorkbook.Sheets(3))// C#
ThisApplication.ActiveWorkbook.Sheets[1].Copy(Type.Missing,
ThisApplication.ActiveWorkbook.Sheets[3]);
在宏里面操作你需要的过程,
然后查看宏内容得到你需要的方法 ....
效果差是什么意思
我的MSDN2001可是很多东西都没有.
---------------------------------------------------------------------------------------
HGLOBAL hGlobal = NULL;
HRSRC hSource = NULL;
LPVOID lpVoid = NULL;
int nSize = 0; // 1. 从资源中读取资源文件数据
hSource = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDC_NewExcelFile), _T("BlankExcelFile"));
if(hSource == NULL)
{
AfxMessageBox("找不到资源");
return;
}
hGlobal = LoadResource(AfxGetResourceHandle(), hSource);
if(hGlobal == NULL)
{
AfxMessageBox("无法装载资源");
return;
}
lpVoid = LockResource(hGlobal);
if(lpVoid == NULL)
{
AfxMessageBox("试图获得资源指针时失败");
return;
} //获取资源的大小,以便后面分配相应大小内存并写入文件
nSize = (UINT)SizeofResource(AfxGetResourceHandle(), hSource); // 2. 分配内存并拷贝数据
HGLOBAL hGlobalMem = GlobalAlloc(GMEM_MOVEABLE, nSize);
if(hGlobalMem == NULL)
{
AfxMessageBox("内存分配失败");
return;
}
void* pData = GlobalLock(hGlobalMem);
memcpy(pData, (BYTE*)hGlobal, nSize);
GlobalUnlock(hGlobalMem); //把资源内容写入指定文件f:\newfile
CFile file("f:\\newfile.xls",CFile::modeCreate|CFile::modeWrite);
file.Write(pData,nSize);
file.Close(); //释放资源
UnlockResource(hGlobal);
FreeResource(hGlobal);
FreeResource(hGlobalMem);
---------------------------------------------------------------------------------------
我当时使用OLE,调用EXCEL的,很慢.
不知有没有*.xls文件格式供大家参考?
_Application ExcelApp; // 定义Excel应用程序
Workbooks wbsBooks;
_Workbook wbBook;
Worksheets wssSheets;
_Worksheet wsSheet;
Range rngXls;
Range rngEnter;
c_Font font; // 字体
Borders border; // 边框 if (::CoInitialize( NULL ) == E_INVALIDARG)
{
AfxMessageBox(_T("初始化Com失败!"));
return;
} // 创建Excel2000服务器(启动Excel)
if ( !ExcelApp.CreateDispatch(_T("Excel.Application"), NULL))
{
AfxMessageBox(_T("创建Excel2000服务失败!"));
::CoUninitialize();
return;
}
有这些类后,就可以使用ADD方法添加表格了,前面需要加入OFFICE自动化
CFile::modeCreate | CFile::modeWrite | CFile::typeText );
lpszFileName="yourexcel.xls"2.用OLE Automation _Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge,range;
CString strDatLineText;
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}