您的位置:首页 > 编程语言 > C#

c#操作Excel模板,替换命名单元格或关键字形成报表

2017-04-18 11:28 363 查看
c#操作Excel模板,替换命名单元格或关键字形成报表

一 建立Excel 模板文件 template.xls





1.1 插入命名单元格的方法:

左上角名称框,显示当前单元格的行列号C2,加入命名后会显示其命名name

方法一:

(1) 点击 单元格“姓名”之后的单元格

(2) 菜单 插入--名称--定义

(3) 在框中输入 name

   确保底部的引用位置为 =Users!$C$2

   按“添加”、“确定”按钮 即可





方法二:

(1) 点击 单元格“姓名”之后的单元格

(2) 在左上角名称框中,输入名称即可  

1.2 制作模板如下:

(1) 在1行1列,写入序号,在2行1列,插入名称  order_num

(2) 在1行2列,写入“报告日期”,在1行3列,插入名称  _报告日期

(3) 在2行2列,写入"姓名",在2行3列,插入名称  name

(4) 在3行2列,写入"年龄",在3行3列,插入名称  age

(5) 在3行2列,写入"结论",在3行3列,插入名称  _结论





二 建立一个,WindowForm格式的解决方案WindowsFormsApplication10

 

三 添加对Excel的引用
1 右击工程的“应用”文件夹--“添加引用”--在“COM”选项页,

  选择“Microsoft Excel 11.0 Object Library”,添加到本工程中,针对office 2003

  并自动引入“Microsoft Office 11.0 Object Library”




 

2 在实现的文件中,加入引用语句:using Excel=Microsoft.Office.Interop.Excel;

  按需要,是否加入引用语句:using Microsoft.Office.Core;

3 注意:如果工程中,曾经加入过Excel,office,VBIDE相同的引用,则再加入后,

需要从该引用的“属性”中,将“潜入互操作类型”从True 改变为 False,否则无法编译





 

 

四 建立一个操作EXCEL的类ExcelTemplate,并在实际工程中,创建类对象即可。

   特别注意:为了程序自动处理方便起见,命名单元格的规则如下:

   1.1 开头处的命名单元格,以1个下划线开始,比如,_报告日期

   1.2 中间多行组循环的命名单元格,不加下划线,且与数据集的字段名一致为好

   1.3 结尾处的命名单元格,以2个下划线开头,比如,__合计

 

五 结果如下:





六 完整代码如下:

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

//1 右击工程的“应用”文件夹--“添加引用”--在“COM”选项页,

//  选择“Microsoft Excel 11.0 Object Library”,添加到本工程中,针对office 2003

//  并自动引入“Microsoft Office 11.0 Object Library”

//2 在实现的文件中,加入引用语句:using Excel=Microsoft.Office.Interop.Excel;

//  按需要,是否加入引用语句:using Microsoft.Office.Core;

using Excel = Microsoft.Office.Interop.Excel;

using Microsoft.Office.Core;

namespace WindowsFormsApplication10

{
//一 主界面文件
    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)

        {//这里演示打开模板文件,替换后保存成实际数据的文件

            //1 定位Excel模板文件template.xls

            string str;

            str = Application.StartupPath;//工作路径

            //       str = Application.ExecutablePath;

            //       str = Environment.CurrentDirectory;

            //       str = System.IO.Directory.GetCurrentDirectory();

            //       str=AppDomain.CurrentDomain.BaseDirectory;

            //d:\WindowsFormsApplication10\WindowsFormsApplication10\bin\Debug\

            //d:\WindowsFormsApplication10\WindowsFormsApplication10\template.xls

            int pos = -1;

            pos = str.IndexOf("\\bin\\Debug");

            string strPath = str;

            if (pos > 0) strPath = str.Substring(0, pos);

            else

            {

                pos = str.IndexOf("\\bin\\Release");

                if (pos > 0) strPath = str.Substring(0, pos);

            }

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: