📄 guyihua.cpp
字号:
// guyihua.cpp : 实现文件
//
#include "stdafx.h"
#include "winsvm.h"
#include "guyihua.h"
#include ".\guyihua.h"
#include "winsvmDlg.h"
// Cguyihua 对话框
IMPLEMENT_DYNCREATE(Cguyihua, CDHtmlDialog)
Cguyihua::Cguyihua(CWnd* pParent /*=NULL*/)
: CDHtmlDialog(Cguyihua::IDD, Cguyihua::IDH, pParent)
, m_excelin(_T(""))
, m_excelout(_T(""))
, m_guyihuain(_T(""))
, m_guyihuaout(_T(""))
, y_lower(0)
, y_upper(0)
, upper(0)
, lower(0)
, m_sheet(1)
, m_row(4)
, m_lie(3)
, m_rowend(273)
, m_lieend(29)
, m_jieguo(_T(""))
{
}
Cguyihua::~Cguyihua()
{
}
void Cguyihua::DoDataExchange(CDataExchange* pDX)
{
CDHtmlDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT13, m_excelin);
DDX_Text(pDX, IDC_EDIT14, m_excelout);
DDX_Text(pDX, IDC_EDIT11, m_guyihuain);
DDX_Text(pDX, IDC_EDIT12, m_guyihuaout);
DDX_Text(pDX, IDC_EDIT1, y_lower);
DDX_Text(pDX, IDC_EDIT15, y_upper);
DDV_MinMaxDouble(pDX, y_upper, -1, 1);
DDV_MinMaxDouble(pDX, y_lower, -1, 1);
DDX_Text(pDX, IDC_EDIT18, upper);
DDX_Text(pDX, IDC_EDIT17, lower);
DDV_MinMaxDouble(pDX, lower, -1, 1);
DDV_MinMaxDouble(pDX, upper, -1, 1);
DDX_Text(pDX, IDC_EDIT2, m_sheet);
DDX_Text(pDX, IDC_EDIT3, m_row);
DDX_Text(pDX, IDC_EDIT4, m_lie);
DDX_Text(pDX, IDC_EDIT5, m_rowend);
DDX_Text(pDX, IDC_EDIT6, m_lieend);
DDX_Text(pDX, IDC_EDIT16, m_jieguo);
}
BOOL Cguyihua::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
CString sPath;//合成数据源文件路径(在当前文件夹下)
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);//返回程序当前路径 d:\...\...\xx.exe
sPath.ReleaseBuffer ();
//AfxMessageBox(sPath);
int nPos;
//在发行状态,将*.exe & *.mdb放在同一文件夹下即可
nPos = sPath.ReverseFind('\\');//只去掉 "\xx.exe"
sPath = sPath.Left (nPos);
m_guyihuaout = sPath + "\\guyihuaout.range";
m_guyihuain = "<请输入地址>";
m_excelout = sPath + "\\excelout.txt";
m_excelin = "<请输入地址>";
m_jieguo = sPath + "\\jieguo.txt";
// TODO: 在此添加额外的初始化
y_lower=lower=-1.0,y_upper=upper=1.0;
y_scaling = 0;
GetDlgItem(IDC_EDIT1)->ShowWindow(0);
GetDlgItem(IDC_EDIT15)->ShowWindow(0);
UpdateData(FALSE);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
BEGIN_MESSAGE_MAP(Cguyihua, CDHtmlDialog)
ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
ON_BN_CLICKED(IDC_BUTTON6, OnBnClickedButton6)
ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON4, OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButton5)
ON_BN_CLICKED(IDC_CHECK1, OnBnClickedCheck1)
ON_BN_CLICKED(IDC_CHECK2, OnBnClickedCheck2)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BUTTON7, OnBnClickedButton7)
END_MESSAGE_MAP()
BEGIN_DHTML_EVENT_MAP(Cguyihua)
DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnButtonOK)
DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnButtonCancel)
END_DHTML_EVENT_MAP()
// Cguyihua 消息处理程序
HRESULT Cguyihua::OnButtonOK(IHTMLElement* /*pElement*/)
{
OnOK();
return S_OK; // 除非将焦点设置到控件,否则返回 TRUE
}
HRESULT Cguyihua::OnButtonCancel(IHTMLElement* /*pElement*/)
{
OnCancel();
return S_OK; // 除非将焦点设置到控件,否则返回 TRUE
}
void Cguyihua::OnBnClickedButton3()
{
CFileDialog fdlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"打开excel文件 (*.xls)|*.xls||");
if(fdlg.DoModal()!=IDOK)
{
return;
}
m_excelin=fdlg.GetPathName();
SetDlgItemText(IDC_EDIT13,m_excelin);
}
void Cguyihua::OnBnClickedButton6()
{
CFileDialog fdlg(false,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"保存文件 (*.txt)|*.txt||");
if(fdlg.DoModal()!=IDOK)
{
return;
}
m_excelout=fdlg.GetPathName(); SetDlgItemText(IDC_EDIT14,m_excelout);
}
void Cguyihua::OnBnClickedButton2()
{
CFileDialog fdlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"打开文件 (*.*)|*.*||");
if(fdlg.DoModal()!=IDOK)
{
return;
}
m_guyihuain=fdlg.GetPathName();
SetDlgItemText(IDC_EDIT11,m_guyihuain);
}
void Cguyihua::OnBnClickedButton4()
{
CButton* p2 = (CButton*)GetDlgItem(IDC_CHECK2);
if (p2->GetCheck())
{
CFileDialog fdlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"打开文件 (*.*)|*.*||");
if(fdlg.DoModal()!=IDOK)
{
return;
}
m_guyihuaout=fdlg.GetPathName();
SetDlgItemText(IDC_EDIT12,m_guyihuaout);
}
else
{
CFileDialog fdlg(false,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"保存文件 (*.range)|*.range||");
if(fdlg.DoModal()!=IDOK)
{
return;
}
m_guyihuaout=fdlg.GetPathName(); SetDlgItemText(IDC_EDIT12,m_guyihuaout);
}
}
void Cguyihua::OnBnClickedButton1()
{
CLSID clsid;
HRESULT hr;
hr=::CLSIDFromProgID(L"Word.Application",&clsid); //通过ProgID取得CLSID
if(FAILED(hr))
{
AfxMessageBox(_T("居然你连OFFICE都没有安装吗?"));
return;
}
UpdateData();
CFileStatus status;//发现有该文件就退出程序
if( !CFile::GetStatus( m_excelin, status ) )
{
MessageBox("excel文件不存在!");
return;
}
CFile f;
CFileException e;
if( !f.Open( m_excelout, CFile::modeCreate | CFile::modeWrite, &e ) )
{
/*AfxGetMainWnd ()->*/MessageBox("excel输出不能备件!");
return;
}
//f.Close();//一定要加,不然ini文件写不了
// excel初始化
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant covTrue((short)TRUE), covFalse((short)FALSE);
_Application objApp;
Workbooks objBooks;
_Workbook objBook;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
//创建Excel对象
if (!objApp.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!");
return;
}
objApp.SetVisible(true);//excel是否显示
objApp.SetUserControl(TRUE); //允许其它用户控制Excel
objBooks=objApp.GetWorkbooks(); //返回工作簿对象
// 打开指定Excel文件
objBook.AttachDispatch(objBooks.Add(_variant_t(m_excelin)));
objSheets=objBook.GetSheets();
// 定义第m_sheet个表为对象
objSheet=objSheets.GetItem((_variant_t)short(m_sheet));
//得到全部的行数用
// objRange.AttachDispatch(objSheet.GetRows());
//long iRowNum=objRange.GetCount();
//得到全部的列数用
//objRange.AttachDispatch(objSheet.GetColumns());
//long iColNum=objRange.GetCount();
//得到全部的区域
//得到全部Cells,此时,objRange是cells的集合
objRange.AttachDispatch(objSheet.GetCells(),true);
////读取已经使用区域的信息,包括已经使用的行数、列数、起始行、起始列
// Range usedRange;
// usedRange.AttachDispatch(objSheet.GetUsedRange());
////已经使用的行数,
// objRange.AttachDispatch(usedRange.GetRows());
// long iRowNum=objRange.GetCount();
// //已经使用的列数
// objRange.AttachDispatch(usedRange.GetColumns());
// long iColNum=objRange.GetCount();
// long iStartRow=usedRange.GetRow(); //已使用区域的起始行,从1开始
// long iStartCol=usedRange.GetColumn(); //已使用区域的起始列,从1开始
BeginWaitCursor ();//鼠标光标
//一下针对全部区域的位置读写
CString excelfile,tr;
char ch3[10];
for(int i=m_row;i<=m_rowend;i++)
{
excelfile+=CString(objRange.GetItem(_variant_t((long)(i)),_variant_t((long)(m_lie))));
excelfile+=" ";
for(int j=m_lie+1;j<=m_lieend;j++)
{
itoa(j-m_lie,ch3,10);
excelfile+=ch3;
excelfile+=":";
tr=CString(objRange.GetItem(_variant_t((long)(i)),_variant_t((long)(j))));
if (tr.IsEmpty())
{
excelfile+="0";
}
else
{
excelfile+=tr;
}
excelfile+=" ";
}
excelfile+="\n";
}
// CArchive ar(&f,CArchive::store);
f.Write(excelfile ,excelfile.GetLength());//写文本
// ar << excelfile;
// ar.Close();
f.Close();//一定要加,
// COleVariant FileName(_T(m_excelin));
// objBook.Close(covTrue,FileName,covOptional);//保存关闭表
// objBook.SaveAs(COleVariant(m_excelin),COleVariant((short)-4143),covOptional,covOptional,covOptional,covOptional,0,covOptional,covOptional,covOptional,covOptional,covOptional);//save
objBook.Close(COleVariant((short)0),covOptional,covOptional); //close
// COleVariant FileName(_T(m_excelin));
// objBook.SaveCopyAs(FileName);//另保存
// 释放句柄
objRange.ReleaseDispatch();
//usedRange.ReleaseDispatch();//使用区域指针释放
objSheet.ReleaseDispatch();
objSheets.ReleaseDispatch();
objBook.ReleaseDispatch();
objBooks.ReleaseDispatch();
//objApp.Quit();
objApp.ReleaseDispatch();
EndWaitCursor (); //结束光标
if(MessageBox("excel信息已经成功导入文本\n继续作归一化处理么?","请选择 ",MB_YESNO)==IDNO)
{
return;
}
SetDlgItemText(IDC_EDIT11,m_excelout);
OnBnClickedButton5();
}
void Cguyihua::OnBnClickedButton5()
{
UpdateData();
CFile fg;
CFileException e;
if( !fg.Open( m_jieguo, CFile::modeCreate | CFile::modeWrite, &e ) )
{
/*AfxGetMainWnd ()->*/MessageBox("归一化输出不能备件!");
return;
}
FILE *fp; char save_filename[1024];//char*改为[1024] char restore_filename[1024];//char*改为[1024] char filename[1024];//char*改为[1024] CButton* p2 = (CButton*)GetDlgItem(IDC_CHECK2);
if (p2->GetCheck())
strcpy(restore_filename, m_guyihuaout);
else
strcpy(save_filename, m_guyihuaout);
strcpy(filename, m_guyihuain);
if(!(upper > lower) || (y_scaling && !(y_upper > y_lower))) { //fprintf(stderr,"inconsistent lower/upper specification\n"); //exit(1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -