博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 操作Excel2003
阅读量:5797 次
发布时间:2019-06-18

本文共 2653 字,大约阅读时间需要 8 分钟。

正题

    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,如需转载请自行联系原作者

你可能感兴趣的文章
Java数据类型小计
查看>>
Linux yum 搭建
查看>>
【安装源码包】
查看>>
警方再对巴黎春天“促销送iPad”展开安全排查
查看>>
浅谈氛围营销
查看>>
Linux/Unix 命令ls -l显示文件信息
查看>>
Shell下 echo 更改字体颜色
查看>>
熟练的Java程序员应该掌握哪些技术?
查看>>
NFS服务器(用的不多)
查看>>
使用 Emmet 生成 HTML 的语法详解(自动生成标签)
查看>>
在TTF字体中提取想要的文字,让字体文件变迷你
查看>>
设计模式---适配器模式
查看>>
Windows下配置安装Git(四)
查看>>
树莓派安装 php 和 nginx
查看>>
[案例]如何异构一个数十亿级别的数据库
查看>>
python 学习
查看>>
Centos5.5 英文系统如何支持中文网页和安装中文输入法
查看>>
server2008R2WSUS部署 安装第二台辅助WSUS
查看>>
使用C语言编写Python扩展包
查看>>
java实现正三角形和到正三角形
查看>>