同样,处理数据时为了实现直接操作excel文件找到的方法,转自CSDN社区,原创by ltolll,向原创作者致敬~

将 Excel 程序集作为引用添加到项目中:在“解决方案资源管理器”中找到“引用”右击,选择“添加引用”。
单击“添加引用”对话框的“COM”选项卡,找到“Microsoft Excel 11 Object Library”。
双击“Microsoft Excel 11 Object Library”,然后按“确定”。
注意:Microsoft Excel 11 Object Library中Excel 11 的版本与安装的OFFICE版本有关。
系统平台:XP + OFFICE2003 + VS2005
在开始之前还需要引入命名空间using Microsoft.Office.Interop.Excel;

这样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个单元格对象。

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

 
posted on 2008-01-04 12:58  洛阳~波  阅读(350)  评论(0编辑  收藏  举报