excel文件的格式设置及文件创建

来源:互联网 发布:调查问卷制作软件 编辑:程序博客网 时间:2024/06/05 02:41

Excel的设置是使用的office的API,要把office的excel.exe API导入到VC的库中,使用这些个接口就可以使用了,导入方法网上可查。

代码如下,首先要建立各种对象,及应用程序接口,03版和07版得API有些不同,所以在创建的时候会有区别,由于水平和时间有限,代码中重复的地方比较多,若是引用可以优化一下:

CApplication app;//创建应用程序接口

       CWorkbook book;//工作簿

       CWorkbooks books;//工作簿集合

       CWorksheet sheet;//工作表

       CWorksheets sheets;//工作表集合

       CRange range;//单元格区域对象

       LPDISPATCH lpDisp;

       COleVariant vResult;

       CString cell;

       int c;

       _variant_t vRange1;//设置单元格线

       _variant_t vRange2;

       _variant_t vRange3;

       _variant_t vRange4;

       VARIANT val;

       COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);

       if(!app.CreateDispatch("Excel.Application"))//启动excel服务器

       {

              AfxMessageBox("无法启动excel服务器");

              return;

       }

       //获取工作簿集合

       books=app.get_Workbooks();

       //添加一个工作簿

       book=books.Add(covOptional);

       //获取工作簿集合

       sheets=book.get_Sheets();

       //获取第一个工作表

       sheet=sheets.get_Item(COleVariant((short)1));

       //对齐方式

       val.vt=VT_I2;

       val.iVal=-4108;

       //A1D1合并单元格

       range=sheet.get_Range(COleVariant("A1"),COleVariant("D1"));//    range.Merge(_variant_t((long)0));//合并

       range.put_RowHeight(_variant_t((long)20));

       CString Fex="姓名: ";

       Fex+=m_UserName;

       Fex=Fex+"                                                                                                    "+Date;

       range.put_Value2(COleVariant(Fex));//设置单元格内容

       //设置第二行

       range=sheet.get_Range(COleVariant("A2"),COleVariant("A2"));

       //设置长度

       range.put_ColumnWidth(_variant_t((long)20));

       //设置行高

       range.put_RowHeight(_variant_t((long)20));

       //居中对齐

       range.put_HorizontalAlignment(val);

       range.put_VerticalAlignment(val);

       //设置单元格内容

       range.put_Value2(COleVariant("时间"));

       range=sheet.get_Range(COleVariant("B2"),COleVariant("B2"));

       //设置长度

       range.put_ColumnWidth(_variant_t((long)50));

       //行高

       range.put_RowHeight(_variant_t((long)20));

       /居中对齐

       range.put_HorizontalAlignment(val);

       range.put_VerticalAlignment(val);

       //单元格内容

       range.put_Value2(COleVariant("今日工作总结"));

       range=sheet.get_Range(COleVariant("C2"),COleVariant("C2"));

       //设置长度

       range.put_ColumnWidth(_variant_t((long)50));

       //行高

       range.put_RowHeight(_variant_t((long)20));

       //居中对齐

       range.put_HorizontalAlignment(val);

       range.put_VerticalAlignment(val);

       //单元格内容

       range.put_Value2(COleVariant(明日计划内容"));

       range=sheet.get_Range(COleVariant("D2"),COleVariant("D2"));

       //设置长度

       range.put_ColumnWidth(_variant_t((long)30));

       //设置行高

       range.put_RowHeight(_variant_t((long)20));

       //居中对齐

       range.put_HorizontalAlignment(val);

       range.put_VerticalAlignment(val);

       //设置单元格内容

       range.put_Value2(COleVariant("其他(项目预警、建言献策等"));

       //////////////////////////////////////////////////////////////

       //设置单元格的线

       vRange1.vt=VT_I2;

       vRange1.iVal=1;//线的样式

       vRange2.vt=VT_I2;

       vRange2.iVal=3;//线?Ì?ä??

       vRange3.vt=VT_I2;

       vRange3.iVal=3;//线的颜色,0black,2white,3red,4green,5blue,6yellow,7pink,8dark blue

       vRange4.vt=VT_UI4;

       vRange4.uintVal=RGB(0,0,0);

 

       lpDisp=sheet.get_Range(COleVariant("A3"),COleVariant("A30"));

       range.AttachDispatch(lpDisp);//绑定

       //设置长度

       range.put_ColumnWidth(_variant_t((long)20));

       //行高

       range.put_RowHeight(_variant_t((long)40));

       //对齐

       range.put_HorizontalAlignment(val);

       range.put_VerticalAlignment(val);

       range.BorderAround(vRange1,vRange2,vRange3,vRange4);//设置单元格框式

       lpDisp=sheet.get_Range(COleVariant("B3"),COleVariant("B30"));

       range.AttachDispatch(lpDisp);//㨮¡§

       //¦¨¨?¡è¨¨

       range.put_ColumnWidth(_variant_t((long)50));

       //¦¨¨?D?

       range.put_RowHeight(_variant_t((long)40));

       //¨®D??

       range.put_HorizontalAlignment(val);

       range.put_VerticalAlignment(val);

       //文本自动换行

       range.put_WrapText(_variant_t((long)1));

       range.BorderAround(vRange1,vRange2,vRange3,vRange4);//

       lpDisp=sheet.get_Range(COleVariant("C3"),COleVariant("C30"));

       range.AttachDispatch(lpDisp);//㨮¡§

       //¦¨¨?¡è¨¨

       range.put_ColumnWidth(_variant_t((long)50));

       //¦¨¨?D?

       range.put_RowHeight(_variant_t((long)40));

       //¨®D??

       range.put_HorizontalAlignment(val);

       range.put_VerticalAlignment(val);

       //自动换行

       range.put_WrapText(_variant_t((long)1));

       range.BorderAround(vRange1,vRange2,vRange3,vRange4);//

       lpDisp=sheet.get_Range(COleVariant("D3"),COleVariant("D30"));

       range.AttachDispatch(lpDisp);//绑定

       range.put_ColumnWidth(_variant_t((long)30));

       range.put_RowHeight(_variant_t((long)40));

       range.put_HorizontalAlignment(val);

       range.put_VerticalAlignment(val);

       range.put_WrapText(_variant_t((long)1));

       range.BorderAround(vRange1,vRange2,vRange3,vRange4);//设置单元格框式

       //////////////////////////////////////////////////////////////////////////////

       //保存excel文件

       COleVariant VOption((long)DISP_E_PARAMNOTFOUND,VT_ERROR);

book.SaveAs(COleVariant(path),VOption,VOption,VOption,VOption,VOption,(long)0,VOption,VOption,VOption,VOption,VOption);

       //把路径存起来,以后就从里面获取文件的位置

       ofstream out("C:\\Path.txt");//

       out<<path<<endl;

       out.close();//关闭文件

       /////////

       UpdateData(FALSE);

       books.Close();

       app.Quit();//退ª??

       //释放对象

       range.ReleaseDispatch();

       sheet.ReleaseDispatch();

       sheets.ReleaseDispatch();

       book.ReleaseDispatch();

       books.ReleaseDispatch();

       app.ReleaseDispatch();

0 0
原创粉丝点击