只用C++,不用MFC怎样把一个数组传给Exce显示?
只用C++,不用MFC怎样把一个数组传给Exce显示?
[解决办法]
分析excel的格式。好像office2007已经给出了word和excel的xml格式定义。
[解决办法]
直接调用excel的COM接口
看看是啥类型的,你就用啥类型的传递
[解决办法]
直接调用COM接口,不过C++用起来可能麻烦点,所以也可以用vbs……
[解决办法]
只用C++,不用MFC怎样把一个数组传给Exce显示?
你就直接写成.txt的,然后把扩展名改成xls
你试试
在一个txt当中
aaaaa
bbbbb
ccccc
ddddd
eeeee
然后,改扩展名
[解决办法]
1.先起动Excel进程
//初始化COM的动态连接库
switch (OleInitialize(NULL))
{
case S_OK:
if (!AfxOleInit())
{
return;
}
std::cout<<"OLEExcel(S_OK)"<<std::endl;
break;
case S_FALSE:
std::cout<<"OLEExcel(S_FALSE1)"<<std::endl;
break;
default:
CoUninitialize();
return;
} // end switch
//创建Excel服务器(启动Excel)
if (!m_excelApp.CreateDispatch(_T("Excel.Application")))
{
std::cout << "CreateDispatch Error!" << std::endl;
return;
}
2.加入工作薄
//AddBook()
m_excelBooks.AttachDispatch(m_excelApp.GetWorkbooks());
m_lpDispatch = m_excelBooks.Add(Optional);
m_excelBook.AttachDispatch(m_lpDispatch);
3.加入工作表
//operation AddSheet(const CString& psName)
//获取工作表集
m_excelSheets.AttachDispatch(m_excelBook.GetWorksheets());
//添加工作表
m_excelSheet.AttachDispatch(m_excelSheets.Add(Optional,
Optional,Optional,Optional));
//设置为活动sheet
m_excelSheet.Activate();
SetSheetName(psName);
4.写值
void OLEExcel::SetCellValue(long lRow, long lCol, COleVariant oleValue) {
//#[ operation SetCellValue(long,long,COleVariant)
//得到Worksheets 需要注意以后新增加sheet后的情况
m_excelSheets.AttachDispatch(m_excelBook.GetWorksheets());
//得到当前活跃sheet
//如果有单元格正处于编辑状态中,此操作不能返回,会一直等待
m_lpDispatch = m_excelBook.GetActiveSheet();
m_excelSheet.AttachDispatch(m_lpDispatch);
range.AttachDispatch(m_excelSheet.GetCells());
range.SetItem(COleVariant(lRow),COleVariant(lCol),oleValue);
//#]
}