C# 操作Excel2003

简介:

正题
    1.(新建工程等步骤在这里都省略了)添加操作excel的COM组件:
  

2.主要的方法代码:

     ///   <summary>
    
///  修改Excel
    
///   </summary>
    
///   <param name="Path"> 读取路径 </param>
        
///   <param name="newPath"> 另存路径 </param>
    
///   <param name="shop_name"> 店名 </param>
    
///   <param name="tablename"> 表名 </param>
     public   void  AlterExcel( string  Path, string  newPath, string  shop_name, string  tablename)
    {
        
try
        {
            Object miss 
=  System.Reflection.Missing.Value;
            Excel.Application ExcelApp 
=   new  Excel.ApplicationClass();
            Excel.Workbooks wbooks 
=  (Excel.Workbooks)ExcelApp.Workbooks;
            Excel.Workbook wbook 
=  wbooks.Open(Path, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss);
            
// 获得第一个工作薄
            Excel.Worksheet wsheet  =  (Excel.Worksheet)wbook.Worksheets.get_Item( 1 );

            ExcelApp.Visible 
=   false ;
            ExcelApp.DisplayAlerts 
=   false ;

            
// 取得编号
            ArrayList arr  =   new  ArrayList();
            
for  ( int  i  =   3 , j  =  wsheet.UsedRange.Rows.Count; i  <  j; i ++ )
            {
                Excel.Range rang 
=  (Excel.Range)wsheet.Cells[i,  2 ];
                
if  ( null   !=  rang.Text  &&  rang.Text.ToString().Length  >   0 )
                    arr.Add(rang.Text);
                
else
                    
break ;
            }

            
// 添加新行 Cells[行,列]
            ((Excel.Range)wsheet.Columns.get_Item( 3 , miss)).Insert(XlInsertShiftDirection.xlShiftToRight, miss);
            
// 添加区域单元格
            
// wsheet.get_Range(wsheet.Cells[2, 3], wsheet.Cells[wsheet.UsedRange.Rows.Count - 3, 3]).Insert(XlInsertShiftDirection.xlShiftToRight, miss);

            
// 设置标头
            wsheet.Cells[ 2 3 =   " 地址 " ;
            ((Excel.Range)wsheet.Columns.get_Item(
3 , miss)).ColumnWidth  =   25 ;
            
// 此处为获得该店的所有地址,这里替换成自己的方法就行
            Hashtable hash  =  GetShopAddr(shop_name, tablename);

            
for  ( int  i  =   3 , j  =  i  +  arr.Count; i  <  j; i ++ )
            {
                
try
                {
                        
// 根据编号设置地址
                    wsheet.Cells[i,  3 =  hash[Convert.ToInt32(arr[i  -   3 ])];
                }
                
catch (Exception)
                {
                    
continue ;
                }
            }
            
// 另存为
            wbook.SaveAs(newPath, miss, miss, miss, miss, miss, Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss, miss, miss);
            wbook.Close(
false , miss, miss);
            ExcelApp.Quit();

            ReleaseObject(wsheet);
            ReleaseObject(wbook);
            ReleaseObject(wbooks);
            ReleaseObject(ExcelApp);

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
        
catch
        {
            
// throw;
        }
        
finally
        {
            
// 结束进程
            
// KillExcelProcess();
        }
    }

    
///   <summary>
    
///  释放对象
    
///   </summary>
    
///   <param name="obj"></param>
     private   void  ReleaseObject( object  obj)
    {
        
try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
        }
        
catch  {}
        
finally  { obj  =   null ; }
    }

    
///   <summary>
    
///  结束Excel进程
    
///   </summary>
     public   void  KillExcelProcess()
    {
        Process[] myProcesses 
=  Process.GetProcessesByName( " Excel " );
        
foreach  (Process myProcess  in  myProcesses)
            myProcess.Kill();
    }

注意:
    a).需要添加命名空间using Microsoft.Office.Interop.Excel;
    b).添加新行处代码两个都行,一个是添加一列一个是添加一个范围的单元格,达到效果是一样的



本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/586502,如需转载请自行联系原作者

相关文章
|
Linux 虚拟化 Docker
|
12月前
|
人工智能 云计算
官宣!阿里云成为总台春晚云计算AI独家合作伙伴
官宣!阿里云成为总台春晚云计算AI独家合作伙伴
524 23
|
11月前
|
机器人 API
【Azure Bot】在中国区的Bot Service上打通Teams Channel注意事项
在中国区的Azure上,已经可以创建机器人服务(Bot Service:https://docs.azure.cn/zh-cn/bot-service/?view=azure-bot-service-4.0),目前可以使用集成的渠道有三种(Direct Line,Web Chat 和 Microsoft Teams):Direct Line 和 Web Chat方式就非常直接,嵌入到自己应用的网页就可以。但是使用Microsoft Teams,则有很多限制。本文主要就是介绍,如果您的机器人服务部署在中国区上,并且需要使用Microsoft Teams时候的注意事项
307 13
|
12月前
|
人工智能 搜索推荐 数据挖掘
销售易VS纷享销客:深入剖析两款CRM系统的优势与适用场景
销售易是国内领先的企业级CRM解决方案提供商,专注于B2B领域,提供销售管理、客户服务、营销自动化等全面支持。其核心优势包括本土化服务、技术创新、产品功能完备等,尤其适合中大型企业和特定行业如制造、高科技等。系统通过AI赋能、移动办公支持和开放平台特性,为企业带来高效、智能的管理体验。尽管价格较高,但其深度功能和扩展性使其成为复杂业务需求的理想选择。
|
12月前
|
监控 Linux Windows
如何在主机安装主机管理工具WGCLOUD的agent端
WGCloud 是一款用于主机监控的工具,通过在目标主机上部署 agent 实现监控。无论是 server 主机还是被监控主机,均需运行 agent。安装包中包含 server 和 agent,只需启动相应 agent 即可。支持多种部署方式,包括压缩包复制、一键部署脚本等。确保 server 和 agent 版本一致,并正确配置 `application.properties` 中的 `serverUrl` 和 `wgToken`。
|
物联网 5G API
怎么在三大运营商中选择物联网卡
在选择物联网卡(IoT卡)的运营商时,您需要考虑几个关键因素,包括网络覆盖、服务质量、价格、功能需求以及后续的技术支持等。中国的三大主要运营商是中国移动、中国联通和中国电信,它们各自在物联网领域有不同的优势和特点。以下是一些建议,帮助您在这三者之间做出选择:
|
机器学习/深度学习 人工智能 监控
ModelScope
ModelScope
500 9
|
存储 消息中间件 SQL
Apache Flink 在国有大型银行智能运营场景下的应用
建信金融科技开发工程师周耀在 FFA 2021 的分享
Apache Flink 在国有大型银行智能运营场景下的应用
|
机器学习/深度学习 人工智能 算法
探索未来编程语言的发展趋势与挑战
随着科技的迅猛发展,编程语言也在不断演变。本文将探讨未来编程语言的发展趋势及面临的挑战,涵盖了人工智能、区块链、量子计算等前沿技术领域,以及如何应对未来编程语言的发展趋势进行探索。