C#操作EXCEL

将 Excel 程序集作为引用添加到项目中:在“解决方案资源管理器”中找到“引用”右击,选择“添加引用”。

单击“添加引用”对话框的“COM”选项卡,找到“Microsoft Excel 11 Object Library”

双击“Microsoft Excel 11 Object Library”,然后按“确定”。

注意:Microsoft Excel 11 Object Library中Excel 11 的版本与安装的OFFICE版本有关(OFFICE2003是Excel 11 ,OFFICE2000是Excel 9.0)。

系统平台:XP + OFFICE2003 + VS2005

在编程之前还需要引入命名空间using Microsoft.Office.Interop.Excel;

注意:有的机器上需要用using Excel;我猜这也跟OFFICE版本有关(并未确定)

这样C#就可以正确识别Excel对象了。

以下代码实现处理指定的"*.XLS"文件,在SHEET1中找到凡单元格中字符串包含子串"FW"两次的,将第二个"FW"及其后面的内容删除。
比如:FW-a001-FW-1 处理后为:FW-a001-

注:这样的单元格说不定出现在哪列(无规律)

private void OperateExcel(string excelFile)
        {
            Microsoft.Office.Interop.Excel.ApplicationClass excelApp = new ApplicationClass();
// 与上面提到的using Excel;相关,有时这里用Excel.ApplicationClass ,不带前面的Microsoft.Office.Interop.
            excelApp.Application.Workbooks.Add(true);
            excelApp.Visible = true; // 使Excel可视
            excelApp.ScreenUpdating = false;
            string tmp = "";
            int pos = 0;
            string str = "fw";
            Workbook wb = excelApp.Workbooks.Open(excelFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            Worksheet ws = (Worksheet)wb.ActiveSheet;//.Sheets[1];
            Range rg = ws.Cells.Find(str + "*" + str, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSearchDirection.xlNext, Type.Missing, Type.Missing, Type.Missing);
            while (rg != null)
            {
                tmp = rg.Value2.ToString();
                pos = tmp.IndexOf(str) + str.Length;
                pos = tmp.IndexOf(str, pos);
                tmp = tmp.Remove(pos);
                rg.Value2 = tmp;
                rg = ws.Cells.FindNext(rg);
            }
            excelApp.ScreenUpdating = true;
            if (!wb.Saved) // 如果“工作薄”没有保存
                wb.Save(); // 将它保存
            excelApp.Quit();
        }

Microsoft.Office.Interop.Excel.ApplicationClass 代表整个EXCEL程序
Workbook代表1个“工作薄”对象,即1个*.XLS文件(EXCEL可以同时打开很多个Workbook,这样就构成了Workbooks)
Worksheet 代表1个“工作薄”中的“工作表”对象(sheet)(1个“工作薄”中可以同时包括很多个sheet,这样就构成了sheets)
excelApp.Application.Workbooks.Add(true);表示新建1个“工作薄”,本例中可以不要
excelApp.ScreenUpdating = false;
ScreenUpdating 属性,设置屏幕是否刷新。通过利用这个属性,您不但可以使您的 Excel 应用程序看起来更加专业,还可以使它们运行得更快--在每次修改后更新显示会严重影响代码的运行效率,特别是在大范围中通过编程方式填写时。然而,重要的是,当您完成您的工作时始终要设置这个属性,因为 Excel 不会为您重新设置它。所以在执行完修改的代码后要恢复它以确保屏幕更新恢复:excelApp.ScreenUpdating = true;
Range代表1个单元格对象。

相关文章:
如何使用 COM Interop 创建 Excel 电子表格
http://msdn2.microsoft.com/zh-CN/library/ms173186.aspx

Workbook Object
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/xlobjWorkbook.asp

 302084 (http://support.microsoft.com/kb/302084/) 如何在 Microsoft Visual C# .NET 中使 Microsoft Excel 自动运行
http://support.microsoft.com/kb/302084/

如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
http://support.microsoft.com/kb/306023/zh-cn#12


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值