在做一个小项目,需要把Excel数据导出,找了一些资料,自己也总结出了一点方法,与大家共享。
一、首先简要描述一下如何操作Excel表
先要添加对Excel的引用。选择项目-〉添加引用-〉COM-〉添加Microsoft Excel 11.0。(不同的office讲会有不同版本的dll文件)。
using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;

string  UserName =System.Environment.UserName.ToString();//得到当前操作系统的用户名称

//产生一个Excel.Application的新进程
Excel.ApplicationClass OldApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
//打开目标表,filename为目标表路径
OldApp.Application.Workbooks.Open(filename,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Valu

e,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
//产生新的workbook
Excel.Workbook mybook = OldApp.Workbooks[1];
mysheet = (Excel.Worksheet)mybook.Worksheets[1];
//得到A9单元格的值
Excel.Range r = mysheet.get_Range(mysheet.Cells[9,1],mysheet.Cells[9,1]);
Str = r.Text.ToString().Trim();

//产生一个Excel.Application的新进程 ,把上表的数据导入的新的EXCEL中,savefilename为新EXCEL表路径
Excel.ApplicationClass NewApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
NewApp.Application.Workbooks.Open(savefilename,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.

Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

NewApp.Cells[2,9] = OldApp.Cells[2,1];
NewApp.Cells[2,14] = OldApp.Cells[2,3];
NewApp.Cells[2,21] = mysheet.get_Range(mysheet.Cells[2,13],mysheet.Cells[2,13]).Text.ToString();

int j;
int i;
 for(j=13;j<=((Excel.Worksheet)OldApp.Worksheets.get_Item(1)).UsedRange.Rows.Count;j++)
 {
  for(i = 1;i<=4;i++)
  {
   NewApp.Cells[j-7,i] = OldApp.Cells[j,i];
  }
  for(i=7;i<=19;i++)
  {
   NewApp.Cells[j-7,i-2]= OldApp.Cells[j,i];
  }
 }

File.Delete(@"c:\Documents and Settings\"+UserName+@"\My Documents\Resume.xlw"); //删除Excel产生的文件
NewApp.Visible = true;
OldApp.Quit();

二、套用模板
//将模板文件复制到一个新文件中
private bool CopyMode(string savefilename) //savefilename为需要套用模板的表路径
{
 if(!File.Exists(ModePath)) //ModePath为模板路径
  {
   MessageBox.Show("模板不存在!");
   return false;
  }
 if(File.Exists(savefilename))
  {
   File.Delete(savefilename);
  }
 File.Copy(ModePath,savefilename);
 return true;
}
三、其他
因为项目上需要导入几个表数据,所以需要对表进行区别,通过比较EXCEL表头的数据来判断是哪个表
//添加引用
using System.Text.RegularExpressions;

#region 利用正则表达式与表头匹配
private bool Regular(string str,string oldstr) //str为需要在oldstr匹配的字段
{
 Regex reg = new Regex(str);
 Match m = reg.Match(oldstr);
 if(m.Success)
 {
  return true;
 }
 else
  return false;

}
#endregion

转载于:https://www.cnblogs.com/nonsuch/archive/2006/08/10/473283.html

C#操作EXCLE表相关推荐

  1. python compare excel_python简单操作excle的方法

    Python操作Excle文件:使用xlwt库将数据写入Excel表格,使用xlrd 库从Excel读取数据. 从excle读取数据存入数据库 1.导入模块: import xlrd 2.打开excl ...

  2. python 操作excle和word

    python 操作word 使用Python操作word 97-2003的旧版本文件名后缀就是.doc 从2007版以后后缀名是.docx 首先安装 pip install python-docx - ...

  3. python操作excle表格

    基础练习 话不多说,先做一下基础练习.来,左边跟我一起画个龙,右边画一道彩虹. # import paramiko # import time import openpyxl from openpyx ...

  4. java mergecells_jxl操作excle表格中mergeCells中的参数

    mergeCells(a,b,c,d) 单元格合并函数 a 单元格的列号 b 单元格的行号 c 从单元格[a,b]起,向左合并到c列 d 从单元格[a,b]起,向下合并到d行 注:单元格的列号和行号都 ...

  5. Oracle 触发器 Update 不能操作本表的疑问

    今天要解决一个需求,类似表A有个字段叫flag存储的是0 or  1 ,当一行记录更改为1的时候,其他行同字段要变为0. 这样的需求第一个思路想尝试下能否用触发器来实现 create or repla ...

  6. 如何用JavaScript操作form表单组件?

    一.用JavaScript操作按钮: <!DOCTYPE html> <html><head><meta charset="UTF-8"& ...

  7. C#操作注册表全攻略

    相信每个人对注册表并不陌生,在运行里面输入"regedit"就可以打开注册表编辑器了.这东西对Windows系统来说可是比较重要的,也是病毒常常会光顾的地方,比如病毒和恶意软件常常 ...

  8. .NET操作注册表的封装类

    我写的一个在.NET下操作注册表的类. using System; using Microsoft.Win32; using System.Collections; namespace iUNS { ...

  9. mybatis 操作动态表+动态字段+存储过程

    mybatis 操作动态表+动态字段+存储过程 存储过程   statementType="CALLABLE" <!-- 计算金额存储过程-->     <upd ...

最新文章

  1. Spring-AOP @AspectJ切点函数之@within()和@target
  2. CV之FR(H+k机器学习):基于每人几张人脸图片训练H+k模型实现(国内外明星)新人脸图像的姓名预测(准确度高达100%)
  3. Vue006_事件处理
  4. 我们真的仍然需要32位JVM吗?
  5. 程序员编程,你的练习是不是有效的?
  6. va_list函数族应用
  7. SSH免密码登录,搭建Flink standalone集群
  8. vue 项目初始化、mock数据以及安装less
  9. LabVIEW 杀死进程 直接调用cmd代码来实现
  10. vb mysql 5.1 adodb_VB 中 ADO、 ADODB、 ADODC 的区别与联系(皮毛)
  11. 阿里云服务器可以搭建游戏吗?
  12. JAVA利用httpclient登录开心网
  13. Newdex Swap闪兑系统已通过PeckShield安全审计服务
  14. 无觅科技分析:如何通过WhatsApp云手机,抢滩海外私域运营市场
  15. 4.s(15): error: A1867E: Immediate 0x00000002 out of range for this operation. Permitted values are
  16. 平面几何中的几个著名定理
  17. Oracle索引与where
  18. Mars3d的html 模板中使用element-ui 组件参考
  19. Scala Try 与错误处理
  20. 毛星云opencv之8.4.4查找和绘制图像轮廓矩

热门文章

  1. apt apt 用法_apt命令–实用用法指南
  2. linux基本命令示例_Linux ps命令– 20个真实示例
  3. 如何使用DevStack在Ubuntu 18.04上安装OpenStack
  4. adalm pluto_Apache Pluto Portlet&Struts 2集成示例教程
  5. kotlin set 私有_Kotlin可见性修改器–公共,受保护,内部,私有
  6. 试用阿里开源的Arthas小记
  7. 《iPad开发从入门到精通》——6.2节系统主界面
  8. [转]自己写PHP扩展之创建一个类
  9. 怎样在spyder中暂停程序的运行
  10. 剑指offer——面试题58:二叉树的下一个结点