Excel Saveas函数 在VC中对EXCEL操作,怎样保存、关闭EXCEL文件?Saveas函数后面有一大堆参数,应该怎么用?最好给出源代码,提供链接也可以 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 { 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;} 想做一个pdf文字识别软件 m_pRecordset.CreateInstance(__uuidof(Recordset)) 窗口更新问题 一个问题想了几天也没解决,那为高手帮我解决(紧急) WTL IE链结拖动的实现 [请ATL/COM/WTL 的开发人员帮帮忙] hotmail邮箱帐户在foxmail中怎样设smtp和pop 帮我看看!! 请问有关:鼠标右键弹出菜单问题! 有关图象识别问题 如何做到和Winamp一样的声音控制???(可以调节各种属性,例如:pop,rock等风格) 找一个可以判定输入的字符串(句子)是否符合给定LL(1)文法的源程序, 哪有SOCKET通信原码?
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;
}