📄 funcoutposinfodlg.cpp
字号:
*pResult = 0;
}
/*********************************************************************
函数说明:
函数参数:
*********************************************************************/
void FuncOutPosInfoDlg::OnCheckOutpiCondition()
{
if (!m_CBtn_OutCheck.GetCheck())
{
IDStateControl(FALSE);
}
else
{
IDStateControl(TRUE);
}
}
/*********************************************************************
函数说明:
函数参数:
*********************************************************************/
void FuncOutPosInfoDlg::IDStateControl(BOOL bState)
{
GetDlgItem(IDC_STATIC_OUTPI_TITLE)->EnableWindow(bState);
GetDlgItem(IDC_STATIC_OUTPI_COMPANY)->EnableWindow(bState);
GetDlgItem(IDC_STATIC_OUTPI_DEPART)->EnableWindow(bState);
GetDlgItem(IDC_COMBO_OUTPI_COMPANY)->EnableWindow(bState);
GetDlgItem(IDC_COMBO_OUTPI_DEPART)->EnableWindow(bState);
}
/*********************************************************************
函数说明:
函数参数:
*********************************************************************/
void FuncOutPosInfoDlg::InitCompanyCmB(CComboBox *pComp)
{
CADOOperation ADOdbo;
CString strComp;
ADOdbo.OpenTable("Search_Table"); // 打开“搜索”表
if (ADOdbo.IsLastRow())
{
ADOdbo.CloseTable();
return;
}
// 得到单位名
pComp->ResetContent();
pComp->AddString("请选择已有的单位");
ADOdbo.MoveFirst();
ADOdbo.GetItemContentStr("Search_Company", CADOOperation::ADO_TYPE_STRING, &strComp);
pComp->AddString(strComp);
DWORD dwRecCount = (ADOdbo.GetRecordCount() - 1);
ADOdbo.CloseTable();
CString SQL;
SQL.Format("SELECT Search_Company FROM Search_Table WHERE 1=1");
ADOdbo.OpenRecordset(SQL);
ADOdbo.MoveFirst();
for (DWORD i = 2; i <= dwRecCount; i++)
{
CString strCompOne;
ADOdbo.MoveTo(i - 1);
ADOdbo.GetItemContentStr("Search_Company", CADOOperation::ADO_TYPE_STRING, &strComp);
strCompOne = strComp;
// 拿出MoveTo的内容,依次和其前面的比较
ADOdbo.MoveFirst();
for (DWORD j = 2; j <= i; j++)
{
ADOdbo.GetItemContentStr("Search_Company", CADOOperation::ADO_TYPE_STRING, &strComp);
if (strCompOne == strComp)
{
ADOdbo.MoveFirst();
break;
}
else
{
ADOdbo.MoveNext();
}
}
if (j > i)
{
pComp->AddString(strCompOne);
}
ADOdbo.MoveFirst();
}
ADOdbo.CloseRecorset();
pComp->SetCurSel(0);
return;
}
/*********************************************************************
函数说明:
函数参数:
*********************************************************************/
BOOL FuncOutPosInfoDlg::InitDepartCmB(CComboBox *pDept)
{
CADOOperation ADODepart;
CString strDepart;
CString strComp;
CString strIndex;
CString SQL;
int nIndex = ((CComboBox*)GetDlgItem(IDC_COMBO_OUTPI_COMPANY))->GetCurSel(); // 选中的“单位”的项数
int nBuff = ((CComboBox*)GetDlgItem(IDC_COMBO_OUTPI_COMPANY))->GetLBTextLen(nIndex); // 该项内容大小
((CComboBox*)GetDlgItem(IDC_COMBO_OUTPI_COMPANY))->GetLBText(nIndex, strComp.GetBuffer(nBuff)); // 获取该项内容
strComp.ReleaseBuffer();
strIndex = strComp.GetBuffer(0);
SQL.Format("SELECT Search_Depart FROM Search_Table WHERE Search_Company = '%s'", strIndex);
ADODepart.OpenRecordset(SQL);
if (ADODepart.IsLastRow())
{
ADODepart.CloseRecorset();
return TRUE;
}
pDept->AddString("请选择部门");
ADODepart.MoveFirst();
do
{
ADODepart.GetItemContentStr("Search_Depart", CADOOperation::ADO_TYPE_STRING, &strDepart);
pDept->AddString(strDepart);
ADODepart.MoveNext();
} while (!ADODepart.IsLastRow());
ADODepart.CloseRecorset();
pDept->SetCurSel(0);
return TRUE;
}
/*********************************************************************
函数说明:
函数参数:
*********************************************************************/
void FuncOutPosInfoDlg::OnSelchangeComboOutpiCompany()
{
((CComboBox*)GetDlgItem(IDC_COMBO_OUTPI_DEPART))->ResetContent(); // 清空“部门”组合框的内容
InitDepartCmB(&m_Cmb_OutPI_Depart);
}
/*********************************************************************
函数说明: [按钮] 修改路径
函数参数:
*********************************************************************/
void FuncOutPosInfoDlg::OnBtnOutpiPath()
{
CFuncOper FunOper;
CString strNewPath;
strNewPath = FunOper.SettingSavePath(this, "请选择保存路径");
if (strNewPath.IsEmpty())
{
strNewPath = m_strFarmExcelPath;
}
m_strFarmExcelPath = strNewPath;
CString strPathMsg;
strPathMsg.Format("(当前保存路径为:%s)", strNewPath);
SetDlgItemText(IDC_STATIC_OUTPI_PATH, strPathMsg);
CADOOperation ADOdbo;
CString SQL;
SQL.Format("update AccessInfo_Table set Infos_Path = '%s' where Index_Path = '农民工路径'", strNewPath);
ADOdbo.OpenRecordset(SQL);
ADOdbo.CloseRecorset();
}
/*********************************************************************
函数说明: 初始化保存路径的显示
函数参数:
*********************************************************************/
void FuncOutPosInfoDlg::InitFarmExcelPath()
{
CADOOperation ADOdbo;
CString SQL;
SQL.Format("select Infos_Path from AccessInfo_Table where Index_Path = '农民工路径'");
ADOdbo.OpenRecordset(SQL);
CString strField[] = {"Infos_Path"};
CString strRetPath[1];
ADOdbo.GetFieldsValue(strField, 1, strRetPath, FALSE);
ADOdbo.CloseRecorset();
m_strFarmExcelPath = strRetPath[0];
CString strPathMsg;
strPathMsg.Format("(当前保存路径为:%s)", strRetPath[0]);
SetDlgItemText(IDC_STATIC_OUTPI_PATH, strPathMsg);
}
/*********************************************************************
函数说明:
函数参数:
*********************************************************************/
void FuncOutPosInfoDlg::OnBtnOutpiExcel()
{
GetDlgItem(IDC_COMBO_OUTPI_QUERYTYPE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_OUTPI_QUERY)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_OUTPI_PATH)->EnableWindow(FALSE);
GetDlgItem(IDC_BTN_OUTPI_EXCEL)->EnableWindow(FALSE);
//变量定义
_Application_Excel m_Application;
Workbooks_Excel m_Workbooks;
_Workbook_Excel m_Workbook;
Worksheets_Excel m_Worksheets;
_Worksheet_Excel m_Worksheet;
Range_Excel m_range;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant covTrue((short)TRUE);
COleVariant covFalse((short)FALSE);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
// 因为在 InitInstance 中已经初始化过 COM 的动态连接库
// if(!AfxOleInit())
// {
// AfxMessageBox("无法初始化COM的动态连接库!");
// return;
// }
//创建Excel 2000服务器(启动Excel)
if(!m_Application.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!");
return;
}
m_Application.SetVisible(FALSE); // 使Excel不可见
m_Application.SetUserControl(FALSE); // 不允许其它用户控制Excel
CFuncOper FunOper;
CString strFile;
strFile = FunOper.GetProgramPath() + "\\DocsWord\\农民工花名册(空).xls";
// COleVariant varFilePath(strFile);
// Workbooks 打开
m_Workbooks.AttachDispatch(m_Application.GetWorkbooks(), TRUE);
lpDisp = m_Workbooks.Open(strFile, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional,covOptional, covOptional);
// 得到 Workbook
m_Workbook.AttachDispatch(lpDisp, TRUE);
// 得到 Worksheets
m_Worksheets.AttachDispatch(m_Workbook.GetWorksheets(), TRUE);
// 得到sheet1
m_Worksheet.AttachDispatch(m_Worksheets.GetItem(COleVariant("sheet1")), TRUE);
// 得到全部 Cells,此时, m_range 是 cells 的集合
m_range.AttachDispatch(m_Worksheet.GetCells(), TRUE);
// 设置单元格的值
for (int i = 2; i < (m_ListCtrl_OutPI.GetItemCount() + 2); i++)
{
m_range.SetItem(COleVariant((long)i),COleVariant((long)1), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 0)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)2), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 1)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)3), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 2)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)4), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 3)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)5), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 4)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)6), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 5)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)7), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 6)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)8), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 7)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)9), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 8)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)10),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 9)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)11),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 10)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)12),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 11)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)13),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 12)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)14),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 13)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)15),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 14)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)16),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 15)));
m_range.SetItem(COleVariant((long)i),COleVariant((long)17),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 16)));
}
SYSTEMTIME SysTime;
GetSystemTime(&SysTime);
CString strSavePath;
strSavePath.Format(m_strFarmExcelPath + "\\农民工花名册(%d-%d-%d-%d-%d-%d)_(%s-%s-%s).xls",
SysTime.wYear, SysTime.wMonth, SysTime.wDay, SysTime.wHour, SysTime.wMinute, SysTime.wSecond,
m_strFarmType, m_strFarmCom, m_strFarmDepart);
// 保存
m_Workbook.SaveAs(COleVariant(strSavePath), covOptional, covOptional, covOptional,
covOptional, covOptional, 0, covOptional, covOptional, covOptional, covOptional);
// 关闭所有的book 退出 Excel
m_Workbook.Close(covOptional, COleVariant(strSavePath), covOptional);
m_Workbooks.Close();
m_Application.Quit();
MessageBox("农民工花名册查询报表生成成功!\t", "提示", MB_OK | MB_ICONEXCLAMATION);
GetDlgItem(IDC_COMBO_OUTPI_QUERYTYPE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_OUTPI_QUERY)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_OUTPI_PATH)->EnableWindow(TRUE);
GetDlgItem(IDC_BTN_OUTPI_EXCEL)->EnableWindow(TRUE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -