| 发表于:2007-12-04 17:14:188楼 得分:0 |
#region " construction method " /// <summary> /// 构造函数 /// </summary> public excelbase() { //实例化excel对象。 exlapp = new excel.application(); } /// <summary> /// 构造函数 /// </summary> /// <param name="excelvisible"> excel是否可见 </param> public excelbase(bool excelvisible) { exlapp = new excel.application(); exlapp.visible = excelvisible; } #endregion #region " open and dispose method definition " /// <summary> /// 打开一个excel文件 /// </summary> public void open() { //get a new worksheet exlworkbook = (workbook)exlapp.workbooks.add(missing.value); exlworksheet = (worksheet)exlworkbook.activesheet; } /// <summary> /// 打开已经存在的excel文件模版 /// </summary> /// <param name="xltpath"> 已经存在的文件模版的完整路径 </param> public void open(string xltpath) { if (system.io.file.exists(xltpath)) { exlworkbook = (workbook)exlapp.workbooks.add(xltpath); exlworksheet = (worksheet)exlworkbook.activesheet; } else { throw new system.io.filenotfoundexception(string.format("{0}不存在,请重新确定文件名", xltpath)); } } /// <summary> /// 保存excel文件 /// </summary> /// <param name="filename"> 保存的文件名 </param> public void saveas(string filename) { exlworksheet.saveas(filename, missing.value, missing.value, missing.value, false, false, excel.xlsaveasaccessmode.xlnochange, missing.value, missing.value, missing.value); } /// <summary> /// 彻底关闭excel的资源和进程 /// </summary> public void dispose() { if (exlapp != null) { exlapp.quit(); } if (exlworkbook != null) { system.runtime.interopservices.marshal.releasecomobject(exlworkbook); exlworkbook = null; } system.runtime.interopservices.marshal.releasecomobject(exlworksheet); exlworksheet = null; system.runtime.interopservices.marshal.releasecomobject(exlapp); exlapp = null; gc.collect(); } #endregion #region " print and printpreview method definition " /// <summary> /// 打印excel文件,可以设置是否是打印前预览打印的excel文件 /// </summary> /// <param name="isprintpreview"> 打印前是否预览 , true:打印前预览false:直接打印,不预览 </param> public void print(bool isprintpreview) { bool flag = exlapp.visible; if (exlapp.visible) { exlapp.visible = true; } exlworksheet.printout(missing.value, missing.value, missing.value, isprintpreview, missing.value, missing.value, missing.value, missing.value); exlapp.visible = flag; } /// <summary> /// 打印excel文件,可以设置是否打印预览,以及打印的份数 /// </summary> /// <param name="isprintpreview"> 打印前是否预览 , true:打印前预览false:直接打印,不预览 </param> /// <param name="icopy"> 打印的份数 </param> public void print(bool isprintpreview, int icopy) { if (icopy < 1) { icopy = 1; } exlworksheet.printout(missing.value, missing.value, missing.value, isprintpreview, icopy, missing.value, missing.value, missing.value); } /// <summary> /// 打印预览excel文件 /// </summary> public void printpreview() { exlworksheet.printpreview(missing.value); } #endregion #region " detail control excel method " /// <summary> /// 将excel隐藏 /// </summary> public void hide() { exlapp.visible = false; } /// <summary> /// 将excel显示 /// </summary> public void show() { exlapp.visible = true; } /// <summary> /// 设置工作簿的名称 /// </summary> /// <param name="worksheet"> </param> public void setworksheetname(string worksheet) { exlworksheet.name = worksheet; } /// <summary> ///返回指定单元格的内容 /// </summary> /// <param name="irow"> 定位的行 </param> /// <param name="icol"> 定位的列 </param> /// <returns> 返回指定单元格的内容 </returns> public string getcelltext(int irow, int icol) { range srange = getrange(irow, icol, irow, icol); string returntext = (string)srange.text; system.runtime.interopservices.marshal.releasecomobject(srange); srange = null; return returntext; } /// <summary> ///返回指定单元格的内容 /// </summary> /// <param name="irow"> 定位的行 </param> /// <param name="icol"> 定位的列 </param> /// <returns> 返回指定单元格的内容 </returns> public string getcelltext(int startrow,int startcol,int startrow2, int startcol2) { range srange = getrange(startrow, startcol, startrow2, startcol2); string returntext = (string)srange.text; system.runtime.interopservices.marshal.releasecomobject(srange); srange = null; return returntext; } /// <summary> /// 设置指定范围单元格的内容,通过单元格,比如从"a1" 到 "b3" /// </summary> /// <param name="startcell"> 开始的单元格,比如"a1" </param> /// <param name="endcell"> 结束的单元格,比如"b2" </param> 机动车统计表.xlt /// <param name="text"> 要设置的内容,可以使用excel的公式 </param> public void setcelltext(string startcell, string endcell, string text) { range srange = exlworksheet.get_range(startcell, endcell); //这里没有用value属性,而用formula属性,因为考虑到可以扩展,可以利用公式 srange.cells.formula = text; system.runtime.interopservices.marshal.releasecomobject(srange); srange = null; } /// <summary> /// 设置指定范围单元格的内容,通过单元格,比如从"a1" 到 "b3" /// </summary> /// <param name="startcell"> 开始的单元格,比如"a1" </param> /// <param name="endcell"> 结束的单元格,比如"b2" </param> 机动车统计表.xlt /// <param name="text"> 要设置的内容,可以使用excel的公式 </param> public void setcelltext(string startcell, string endcell, int text) { range srange = exlworksheet.get_range(startcell, endcell); //这里没有用value属性,而用formula属性,因为考虑到可以扩展,可以利用公式 srange.cells.formula = text.tostring(); system.runtime.interopservices.marshal.releasecomobject(srange); srange = null; } | | |
|