环境 Windows XP Microsoft Visual Studio office 网上搜索C#实现excel操作的示例太多了但不知道有多少是经过验证确实可行才发布出来的也是因为开发需要我找了一些代码却发现大多都不能正确执行完毕于是决定补充自己在实践中遇到的要点以供参考如下示例 添加的文件头: using SystemReflection; // 引用这个才能使用Missing字段 using Excel; ExcelApplicationClass excel = new ExcelApplicationClass(); excelVisible = true; //激活Excel Workbook wBook = excelWorkbooksAdd(true); // Worksheet wSheet = (Excel_Worksheet)wBookActiveSheet; Worksheet wSheet = (ExcelWorksheet)wBookActiveSheet; excelCells[ ] = 本公司电话: + Phone; excelCells[ ] = 本公司传真: + Zhen; excelCells[ ] = 联系人: + ComName; excelCells[ ] = 客户: + CustomerName; excelCells[ ] = 联系人: + Associate; excelCells[ ] = 户名:; excelCells[ ] = AccountName; excelCells[ ] = 开户行:; excelCells[ ] = BranchName; excelCells[ ] = 帐号:; excelCells[ ] = + AccountID; //设置禁止弹出保存和覆盖的询问提示框 excelDisplayAlerts = false; excelAlertBeforeOverwriting = false; //保存工作薄 // wBookSave(); //每次保存激活的表这样才能多次操作保存不同的Excel表默认保存位置是在我的文档 excelCellsFontSize = ; excelCellsFontBold = false; // ExcelRange m_objRange = m_objRangeget_Range( ); wSheetget_Range(excelCells[ ] excelCells[ ])FontSize = ; wSheetget_Range(excelCells[ ] excelCells[ ])FontBold = true; wSheetget_Range(excelCells[ ] excelCells[ ])FontColorIndex = ;//此处设为红色不能用FontColor来设置颜色 // m_objRangeCellsFontSize = ; // m_objRangeCellsFontBold = true; excelActiveWorkbookSaveCopyAs(filename); excelQuit(); 代码注释部分只是简单描述各语句的原由个别的还是值得推敲的 语句一 Workbook wBook = excelWorkbooksAdd(true); WorkbooksAdd的参数是个object类型通常使用true或null表明工作簿在默认文档下创建或者使用枚举值 XlWBATemplatexlWBATWorksheet但如果传入一个excel完整文件名却相当于打开已有工作簿 语句二 Worksheet wSheet = (ExcelWorksheet)wBookActiveSheet; 这样可以操作多个工作表的话实例化之后加入到wBookWorksheets中去如果是打开已存在的工作簿这条语句也可能会报错 最好是调用wBookActiveSheet来获取或者再加些判断 语句三 excelActiveWorkbookSaveCopyAs(filename);这两句代码至关重要而且必不可少否则保存时会弹出是否保存sheetxls的对话框判断当前激活的表并保存这个表 语句四 excelQuit(); 这个关闭一直有疑点因为C#操作com非托管对象时凭借Quit()还没有释放掉对象excel进程不一定会终止于是有人使用KillProcess()来处理我个人认为这不是一个好主意可能会破坏其它正在执行的excel进程目前我使用app = null;权作安慰吧不过有一点是一定要做到就是在Quit()前不能再有任何更改不然还是会弹出保存的对话框所以退出前确保一定是执行过WorkBook或是Application的Save()方法的 对于在c#中操作excel应用的方面很多可能还会有些疑问出现知晓来龙去脉的朋友尽量补充以方便大家吧 |