VC++操作Excel在VS2008编码实例(一)

2014-11-24 08:35:51 · 作者: · 浏览: 0

这篇文章是接上一篇 VC++操作Excel在VS2008配置过程后的编码实例,详细给出了操作EXCEL的操作过程,大家可以举一反三,实现自己的功能。

gsExcel::CApplication m_ExlApp;
gsExcel::CRange m_ExlRange;
gsExcel::CWorkbook m_ExlWorkBook;
gsExcel::CWorkbooks m_ExlWorkBooks;
gsExcel::CWorksheet m_ExlWorkSheet;
gsExcel::CWorksheets m_ExlWorkSheets;
gsExcel::CRange m_ExlColor;
gsExcel::CFont0 m_ExlFont;


CString strTheAppPath;
CString strTheAppName;


TCHAR szAppPath[MAX_PATH];
GetModuleFileName(NULL, szAppPath, MAX_PATH);
strTheAppPath = CString(szAppPath);


strTheAppName = AfxGetApp()->m_pszAppName;
strTheAppName += _T(".exe");


int iLengthOne = strTheAppPath.GetLength();
int iLengthTwo = strTheAppName.GetLength();


strTheAppPath.Delete(iLengthOne - iLengthTwo, iLengthTwo);


CString strTemplatePath;


strTemplatePath += _T("TemplateOne.xlsx");
strTemplatePath = strTheAppPath + strTemplatePath;




COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);


// 启动EXCEL应用程序
if(!m_ExlApp.CreateDispatch(_T("Excel.Application")))
{
MessageBox(_T("创建Excel服务失败...."),_T("信息提示"), MB_OK);
return;
}


// 设置为可见
m_ExlApp.put_Visible(FALSE);


// 获取工作簿集合
m_ExlWorkBooks = m_ExlApp.get_Workbooks();


// 在工作簿集合中添加一个工作簿
m_ExlWorkBook = m_ExlWorkBooks.Add(covOptional);
m_ExlWorkSheets = m_ExlWorkBook.get_Sheets();
m_ExlWorkSheet = m_ExlWorkSheets.get_Item(_variant_t((short)2));



m_ExlRange=m_ExlWorkSheet.get_Range(_variant_t(_T("A1")),_variant_t(_T("A1")));
m_ExlRange.put_Value2(_variant_t("HELLO EXCEL!"));


m_ExlRange=m_ExlWorkSheet.get_Range(_variant_t("A2"),_variant_t("A2"));
m_ExlRange.put_Formula(_variant_t("=RAND()*100000"));
m_ExlRange.put_NumberFormat(_variant_t("$0.00"));


m_ExlRange=m_ExlWorkSheet.get_Range(_variant_t("A3"),_variant_t("A3"));
m_ExlRange.put_Value2(_variant_t(5));


m_ExlColor=m_ExlRange.get_EntireColumn();
m_ExlColor.AutoFit();


// 获取第一个表单
m_ExlWorkSheet = m_ExlWorkSheets.get_Item(_variant_t((short)1));


m_ExlRange = m_ExlWorkSheet.get_Range(_variant_t(_T("A1")), _variant_t(_T("A1")));
m_ExlRange.put_Value2(_variant_t(_T("Date")));
m_ExlRange = m_ExlWorkSheet.get_Range(_variant_t(_T("B1")), _variant_t(_T("B1")));
m_ExlRange.put_Value2(_variant_t(_T("Order")));
m_ExlRange = m_ExlWorkSheet.get_Range(_variant_t(_T("C1")), _variant_t(_T("C1")));
m_ExlRange.put_Value2(_variant_t(_T("Amount")));
m_ExlRange = m_ExlWorkSheet.get_Range(_variant_t(_T("D1")), _variant_t(_T("D1")));
m_ExlRange.put_Value2(_variant_t(_T("Tax")));




// 向单元格中添加公式


m_ExlRange = m_ExlWorkSheet.get_Range(COleVariant(_T("D2")), covOptional); // 获得D2 Range
m_ExlRange = m_ExlRange.get_Resize(COleVariant((long)1), COleVariant((long)1)); // 重新设置D2的大小
m_ExlRange.put_Formula(COleVariant(_T("=C2*0.07"))); // 给D2:D21设置公式


// 设置单元格的格式


m_ExlRange = m_ExlWorkSheet.get_Range(COleVariant(_T("A1")), COleVariant(_T("D1"))); // 获得A1:D1的Range
m_ExlFont = m_ExlRange.get_Font(); // 获得Range的字体
m_ExlFont.put_Bold(COleVariant((short)TRUE)); // 设置是否粗体
m_ExlFont.put_Color(COleVariant((long)RGB(255, 0, 0))); // 设置字体颜色
m_ExlFont.put_Name(COleVariant(_T("黑体"))); // 设置字体类型
m_ExlColor = m_ExlRange.get_EntireColumn(); // 获得全部的单元格
m_ExlColor.AutoFit();

//3、 合并单元格


// 思路:1.先获取A1:C1的Range范围,然后重新定义此范围,最后合并
// 2.直接获得A1:C2的Range范围,直接合并。结果和第一种方法一样
gsExcel::CRange unionRange;
unionRa