关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)

导出数据到Excel文件中二种方法四种形式;其一是创建新的Excel文件实例写入数据;其二是打开已有Excel文档对其执行更新或插入数据;保存文档方法有:直接保存(2种)、另存、间接保存。接下来分别介绍:

        private void 数据导出Excel文件(DataGridView 控件名, string [] 创建标头)
        {
            Microsoft.Office.Interop.Excel.Application 创建Excel文件 = new Microsoft.Office.Interop.Excel.Application();
            this.BeginInvoke(new Action(delegate()
            {
                处理提示.Text = "提示:正在导出数据,这需要几分钟时间,请稍后......";
                创建Excel文件.Application.Workbooks.Add(true);
                //((Microsoft.Office.Interop.Excel.Worksheet)创建Excel文件.Worksheets[1]).Name = this.Text.Substring(this.Text.LastIndexOf("\\") + 1).Replace("[", "").Replace("]", "").Replace(".xls", "");
                for (int 标头 = 0; 标头 < 创建标头.Length; 标头++) 创建Excel文件.Cells[1, 标头 + 1] = 创建标头[标头];
                for (int 行 = 0, 数 = 控件名.RowCount; 行 < 数; 行++)
                {
                    控件名.Invoke(new Action(delegate() { 控件名.CurrentCell = 控件名.Rows[行].Cells[5]; }));
                    for (int 列 = 0, 量 = 控件名.ColumnCount; 列 < 量; 列++)
                        创建Excel文件.Cells[行 + 2, 列 + 1] = "'" + 控件名.Rows[行].Cells[列].Value;
                }
                处理提示.Text = "数据导出完成,请保存好!";
                创建Excel文件.Visible = true;/* 创建Excel文件.SaveWorkspace();*/ 创建Excel文件.Quit();
            }));
            MessageBox.Show("数据导出Excel成功,请保存好!" + 控件名.RowCount.ToString() + "行数据。", "友情提示!");
        }

上面这种方法直接读取控件中数据赋值给文档,保存就有2种保存方式,其一创建新实例写入数据后显示文档,当关闭文档时提示是否保存,我称之为间接保存方式,其二就是注释掉的直接保存工作簿方式/* 创建Excel文件.SaveWorkspace();*/,同时给工作簿改名称的写法也有2种,上面代码注释的一种。
这样,这个软件开发基本功能就算完成了,可以拿出来运行。随着工作继续,发现如果想再次编辑已经导出的文档继续未完成工作怎么办呢?于是,写了浏览和保存Excel文档功能,代码如下:

        private void 浏览Excel文件()
        {
            处理结果.Columns.Clear(); 地址分类树.Nodes.Clear(); 地址分类树.Nodes.Add("?");
            OpenFileDialog 打开文件 = new OpenFileDialog();
            打开文件.Filter = "Excel表格文件(xls)|*.xls;|所有文件(*.*)|*.*";
            if (打开文件.ShowDialog() == DialogResult.OK) 读取表格数据 = 读取微软表格文件(打开文件.FileName);
            else 加载空结果();
            读取.Join(); this.Text = "[金刚般若]字符分类提取:" + 打开文件.FileName;
            //DataRow 插入行 = 读取表格数据.Tables[0].NewRow(); 读取表格数据.Tables[0].Rows.InsertAt(插入行, 0);
            if (读取表格数据.Tables.Count > 0) 处理结果.DataSource = 读取表格数据.Tables[0];
            菜单设置(new int[] { 3, 6, 7, 14, 15, 16, 18, 19, 20, 21, 22, 23 }, true);
            if (处理结果.ColumnCount >= 11)
            {
                处理结果.Columns[1].Width = 55; 处理结果.Columns[2].Width = 55;
                处理结果.Columns[5].Width = 105; 处理结果.Columns[6].Width = 35; 处理结果.Columns[11].Width = 500;
            }
            if (读取表格数据.Tables.Count > 0) MessageBox.Show("打开文件完成!" + 读取表格数据.Tables[0].Rows.Count.ToString() + "行数据。", "友情提示!");
        }

上面代码选择文档读到表绑定给显示数据控件,记得上次发布过的是从数据表读取数据直接赋值给控件,当然,有的人希望以直接操作数据表的方式处理数据也是一种方法,其实采用哪种方法都可以,看个人的了,已经发布的采用不同方法处理数据都可以借鉴,我也可以把上次发布过的改为操作数据表后绑定,我喜欢用多种写法可以灵活变通;
同时代码中注释掉的语句是向数据表中插入一行空白行到指定行数位置;如果取消打开文档则给显示控件设置标题,如果打开文档同时设置列宽度等其他设置。
下面是另存文档方法,给工作簿改名称的另一种写法,如下:

        private void 保存Excel文件()
        {
            string 文档路径 = this.Text.Substring(this.Text.LastIndexOf(":") + 1).Replace("[", "").Replace("]", "").Replace(".xls", "");
            Microsoft.Office.Interop.Excel.Application Excel文件 = new Microsoft.Office.Interop.Excel.Application();
            Excel文件.Application.Workbooks.Add(true);
            Microsoft.Office.Interop.Excel.Worksheet 文件 = (Microsoft.Office.Interop.Excel.Worksheet)Excel文件.ActiveSheet;
            文件.Name = "核对完成" + 文档路径.Substring(文档路径.LastIndexOf("\\") + 1);
            for (int 标头 = 0; 标头 < 创建1.Length; 标头++) Excel文件.Cells[1, 标头 + 1] = 创建1[标头];
            for (int 行 = 0, 数 = 处理结果.RowCount; 行 < 数; 行++)
            {
                处理结果.Invoke(new Action(delegate() { 处理结果.CurrentCell = 处理结果.Rows[行].Cells[5]; }));
                for (int 列 = 0, 量 = 处理结果.ColumnCount; 列 < 量; 列++)
                {
                    Excel文件.Cells[行 + 2, 列 + 1] = "'" + 处理结果.Rows[行].Cells[列].Value;
                    if (行 % 4 == 0 && 列 % 2 == 0) Excel文件.Cells[行 + 2, 列 + 1].Interior.Color = Color.FromArgb(0, 255, 255);
                }
                //Excel文件.Cells[1, 1].Font.ColorIndex = 3;
                Excel文件.Cells[1,1].Font.Bold = true;/*设置文档单元格和字体,上次论坛中回帖的*/
            }
            处理提示.Text = "数据导出完成,请保存好!";
            文件.SaveAs(@文档路径); Excel文件.Quit();
        }

下次发布:依快捷菜单项自上而下介绍尚余的功能代码,其实数据处理无非控件和数据表之间转换,接下来所介绍中,可以看到控件数据读到数据表,再用数据表写入文档的方式,一种向文档中插入和更新数据直接保存的方法,上来几天发布的代码好像已经把一些菜单项介绍完了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值