TA的每日心情![](source/plugin/dsu_paulsign/img/emot/kx.gif) | 开心 昨天 15:23 |
---|
签到天数: 69 天 [LV.6]常住居民II
管理员
- 积分
- 2704
|
添加创建文档或打开文档的实现代码:
void CcontrolExcelView::OnBnClickedButtonOpenFile()
{
// TODO: 在此添加控件通知处理程序代码
LPDISPATCH lpDisp = NULL;
//创建Excel 服务器(启动Excel)
if(!ExcelApp.CreateDispatch(_T("Excel.Application"),NULL))
{
AfxMessageBox(_T("启动Excel服务器失败!"));
return;
}
/*判断当前Excel的版本*/
CString strExcelVersion = ExcelApp.get_Version();
int iStart = 0;
strExcelVersion = strExcelVersion.Tokenize(_T("."), iStart);
if (_T("11") == strExcelVersion)
{
//AfxMessageBox(_T("当前Excel的版本是2003。"));
GetDlgItem(IDC_EDIT_VERSIONS)->SetWindowText(_T("Excel2003"));
}
else if (_T("12") == strExcelVersion)
{
//AfxMessageBox(_T("当前Excel的版本是2007。"));
GetDlgItem(IDC_EDIT_VERSIONS)->SetWindowText(_T("Excel2007"));
}
else
{
//AfxMessageBox(_T("当前Excel的版本是其他版本。"));
GetDlgItem(IDC_EDIT_VERSIONS)->SetWindowText(_T("Excel"));
}
ExcelApp.put_Visible(TRUE);
ExcelApp.put_UserControl(TRUE);
/*得到工作簿容器*/
books.AttachDispatch(ExcelApp.get_Workbooks());
/*打开一个工作簿,如不存在,则新增一个工作簿*/
CString strBookPath = m_strPathName;
try
{
/*打开一个工作簿*/
lpDisp = books.Open(strBookPath,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing);
book.AttachDispatch(lpDisp);
}
catch(...)
{
/*增加一个新的工作簿*/
lpDisp = books.Add(vtMissing);
book.AttachDispatch(lpDisp);
}
/*得到工作簿中的Sheet的容器*/
sheets.AttachDispatch(book.get_Sheets());
/*打开一个Sheet,如不存在,就新增一个Sheet*/
CString strSheetName = _T("NewSheet");
try
{
/*打开一个已有的Sheet*/
lpDisp = sheets.get_Item(_variant_t(strSheetName));
sheet.AttachDispatch(lpDisp);
}
catch(...)
{
/*创建一个新的Sheet*/
lpDisp = sheets.Add(vtMissing, vtMissing, _variant_t((long)1), vtMissing);
sheet.AttachDispatch(lpDisp);
sheet.put_Name(strSheetName);
}
}
读取单元格的代码
void CcontrolExcelView::OnBnClickedButtonRead()
{
// TODO: 在此添加控件通知处理程序代码
//获取单元格
UpdateData(TRUE);
CString strRange;
strRange.Format(_T("%d"), m_lRow);
strRange = m_strColumn + strRange;
//获取range
LPDISPATCH lpDisp = NULL;
lpDisp = sheet.get_Range(COleVariant(strRange), COleVariant(strRange));
range.AttachDispatch(lpDisp);
VARIANT ret = range.get_Value(vtMissing);
switch (ret.vt)
{
case VT_R8:
{
m_strRange.Format(_T("%d"), (int)ret.dblVal);
}
break;
case VT_BSTR:
{
m_strRange = ret.bstrVal;
}
break;
case VT_I4:
{
m_strRange.Format(_T("%ld"), (int)ret.lVal);
}
break;
default:
{
}
break;
}
UpdateData(FALSE);
}
改变单元格边框的实现代码
void CcontrolExcelView::OnBnClickedButtonStyle()
{
// TODO: 在此添加控件通知处理程序代码
//获取单元格
UpdateData(TRUE);
CString strRange;
strRange.Format(_T("%d"), m_lRow);
strRange = m_strColumn + strRange;
//获取range
LPDISPATCH lpDisp = NULL;
lpDisp = sheet.get_Range(COleVariant(strRange), COleVariant(strRange));
range.AttachDispatch(lpDisp);
// 然后设置外边框
// LineStyle=线型(1~13) Weight=线宽 ColorIndex=线的颜色(-4105为自动, 1为黑色)
long lColor = RGB(255, 0, 0);
COleVariant varColor(lColor);
range.BorderAround(_variant_t(long(3)), 3, 3, vtMissing);//设置边框
}
改变单元格字体的实现代码
void CcontrolExcelView::OnBnClickedButtonFont()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
CString strRange;
strRange.Format(_T("%d"), m_lRow);
strRange = m_strColumn + strRange;
//获取range
LPDISPATCH lpDisp = NULL;
lpDisp = sheet.get_Range(COleVariant(strRange), COleVariant(strRange));
range.AttachDispatch(lpDisp);
CFont0 ft;
ft.AttachDispatch(range.get_Font());
ft.put_Name(_variant_t(_T("华文行楷")));
ft.put_Size(_variant_t(8));
ft.put_Color(_variant_t(RGB(255, 0, 0)));
}
改变单元格底色的实现代码
void CcontrolExcelView::OnBnClickedButtonDise()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
CString strRange;
strRange.Format(_T("%d"), m_lRow);
strRange = m_strColumn + strRange;
//获取range
LPDISPATCH lpDisp = NULL;
lpDisp = sheet.get_Range(COleVariant(strRange), COleVariant(strRange));
range.AttachDispatch(lpDisp);
//改变底色
Cnterior interior;
interior.AttachDispatch(range.get_Interior());
interior.put_ColorIndex(_variant_t((long)20)); //将底色改为浅青色
}
保存文件的实现代码
void CcontrolExcelView::OnBnClickedButtonSave()
{
// TODO: 在此添加控件通知处理程序代码
book.Save();
ExcelApp.Quit();
//释放
range.ReleaseDispatch();
sheet.ReleaseDispatch();
sheets.ReleaseDispatch();
book.ReleaseDispatch();
books.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
} |
|