Excel Saveas函数

hust 2003-06-11 10:50:06
在VC中对EXCEL操作,怎样保存、关闭EXCEL文件?Saveas函数后面有一大堆参数,应该怎么用?最好给出源代码,提供链接也可以
...全文
671 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hust 2003-06-12
  • 打赏
  • 举报
回复
没有人研究过这个问题吗?
zzh5335 2003-06-12
  • 打赏
  • 举报
回复
{
WIN32_FIND_DATA FileData;
HANDLE hSearch;

USES_CONVERSION;
hSearch = FindFirstFile(A2T(strTableName), &FileData);
if (hSearch != INVALID_HANDLE_VALUE) // 找到
{
if(IDYES == ::MessageBox(this->m_hWnd, _T("该文件已经存在,要替换吗?"),
_T("提示"), MB_YESNO))
{
DeleteFile(A2T(strTableName));
}
else
{
return TRUE;
}
}


COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
Font font;
Range cols;

app.CreateDispatch(_T("Excel.Application"));
app.SetVisible(1);
//Get a new workbook.
books = app.GetWorkbooks();
book = books.Add (covOptional);

//Get the first sheet.
sheets =book.GetSheets();
sheet = sheets.GetItem(COleVariant((short)1));

// 设置报表的标题
range = sheet.GetRange(COleVariant(_T("A1")), COleVariant(_T("A1")));
range.SetValue(COleVariant(A2T(strTitle)));
font = range.GetFont();
font.SetBold(covTrue);
font.SetSize(COleVariant(_T("14")));

// 设置项目名
range = sheet.GetRange(COleVariant(_T("A2")), COleVariant(_T("A2")));
range.SetValue(COleVariant(_T("学号")));
range = sheet.GetRange(COleVariant(_T("B2")), COleVariant(_T("B2")));
range.SetValue(COleVariant(_T("姓名")));

// 获得年级数
TCHAR tstr[MAX_PATH];
CHAR strTemp[MAX_PATH];
int nGrade = 0;
std::vector<OBJECTSTRUC *> szVecObj;

nGrade = SendMessage(GetDlgItem(IDC_COMBO_GRADE), CB_GETCURSEL, 0, 0) + 1;

if(!GetObjectFromTable(nGrade, szVecObj))
{
::MessageBox(this->m_hWnd, _T("从表中读取科目信息错误"), _T("提示"), MB_OK | MB_ICONEXCLAMATION);
return FALSE;
}

// 把科目的名称写上去
for(int i = 0; i < szVecObj.size() - 2; i ++)
{
sprintf(strTemp, "%c2", 'C' + i);
range = sheet.GetRange(COleVariant(A2T(strTemp)), COleVariant(A2T(strTemp)));
range.SetValue(COleVariant(A2T(szVecObj[i]->m_chaName)));
}

// 添加主科总分
sprintf(strTemp, "%c2", 'C' + szVecObj.size() - 2);
range = sheet.GetRange(COleVariant(A2T(strTemp)), COleVariant(A2T(strTemp)));
range.SetValue(COleVariant(_T("主科总分")));

// 添加主科名次
sprintf(strTemp, "%c2", 'C' + szVecObj.size() - 1);
range = sheet.GetRange(COleVariant(A2T(strTemp)), COleVariant(A2T(strTemp)));
range.SetValue(COleVariant(_T("主科名次")));

// 添加总分
sprintf(strTemp, "%c2", 'C' + szVecObj.size());
range = sheet.GetRange(COleVariant(A2T(strTemp)), COleVariant(A2T(strTemp)));
range.SetValue(COleVariant(_T("总分")));

// 添加总分名次
sprintf(strTemp, "%c2", 'C' + szVecObj.size() + 1);
range = sheet.GetRange(COleVariant(A2T(strTemp)), COleVariant(A2T(strTemp)));
range.SetValue(COleVariant(_T("总分名次")));

// 添加考场说明以及学号、姓名

// 读出表中的所有记录
ADODB::_RecordsetPtr pRS = NULL;
pRS.CreateInstance(__uuidof(ADODB::Recordset));
SendMessage(GetDlgItem(IDC_COMBO_SOURCE_TABLENAME),
WM_GETTEXT, MAX_PATH, (LONG)tstr);
sprintf(strTemp, "SELECT 学号, 姓名 FROM %s", T2A(tstr));
pRS->Open(strTemp, _variant_t((IDispatch *)g_pConn, TRUE),
ADODB::adOpenStatic, ADODB::adLockOptimistic, ADODB::adCmdText);

int rows = 3;
for(i = 0; i < g_room.size(); i ++)
{
// 添加考场人数及说明
sprintf(strTemp, "A%d", rows);
range = sheet.GetRange(COleVariant(A2T(strTemp)), COleVariant(A2T(strTemp)));
sprintf(strTemp, "%d场%d人", atol(g_room[i].m_chaNo), atol(g_room[i].m_chaPersons));
range.SetValue(COleVariant(A2T(strTemp)));

sprintf(strTemp, "B%d", rows ++);
range = sheet.GetRange(COleVariant(A2T(strTemp)), COleVariant(A2T(strTemp)));
range.SetValue(COleVariant(A2T(g_room[i].m_chaDescription)));

// 添加学号和姓名
VARIANT var;
for(int j = 0; j < atol(g_room[i].m_chaPersons); j ++)
{
if(!pRS->adoEOF)
{
sprintf(strTemp, "A%d", rows);
range = sheet.GetRange(COleVariant(A2T(strTemp)), COleVariant(A2T(strTemp)));
var = pRS->GetCollect("学号");
range.SetValue(COleVariant(var.lVal));

sprintf(strTemp, "B%d", rows ++);
range = sheet.GetRange(COleVariant(A2T(strTemp)), COleVariant(A2T(strTemp)));
var = pRS->GetCollect("姓名");
range.SetValue(COleVariant(OLE2T(var.bstrVal)));
pRS->MoveNext();
}
}
}

pRS->Close();

// 保存结果, 退出Excel程序
book.SaveAs(COleVariant(A2T(strTableName)), covOptional,
covOptional, covOptional, covOptional, covOptional,
1,covOptional, covFalse, covOptional, covOptional);
//book.SaveCopyAs(var111);

//VariantClear(&var111);
app.Quit();

return TRUE;
}

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧