关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)
来源:互联网 发布:苹果手机短信群发软件 编辑:程序博客网 时间:2024/04/30 05:37
导出数据到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(); }
下次发布:依快捷菜单项自上而下介绍尚余的功能代码,其实数据处理无非控件和数据表之间转换,接下来所介绍中,可以看到控件数据读到数据表,再用数据表写入文档的方式,一种向文档中插入和更新数据直接保存的方法,上来几天发布的代码好像已经把一些菜单项介绍完了。
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)
- 关于Excel操作编写的一个软件设计构思案例[连载]
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何创建快捷菜单执行人机交互操作、软件初始化设置
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何实现从字符串中提取需要的字符并赋值给指定单元格内
- 关于Excel操作编写的一个软件设计构思案例[连载] --保存条件设定的另一种方式:更新与插入方法
- 关于Excel操作编写的一个软件设计构思案例[连载] --辅助功能:补全缺少数据、树定位、文本读与保存
- Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度(一)
- Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度(二)
- Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度
- 在winform开发中如何把datagrid里面的数据导出成EXCEL文件
- 把多个excel文件的sheet1数据合并到一个excel文件的sheet1中
- winform中 如何读取Excel文件,之后再把它写入一个新的Excel文件
- 关于导出excel 把一个dataset的多个datatable导入到一个excel的多个sheet中
- java 怎么向Excel中加入超链接,指向相对路径的文件,同时设置字体颜色
- Nopi导出excel 设置字体颜色
- 用VB把多个excel文件的数据顺序拷到一个excel中
- 把DATASET里的多个表导出到一个excel文件?
- 深入arraylist 和 hashset
- textview cannot be resolved to a type 的解决办法
- C++网络爬虫的实现——WinSock编程
- hdu 1542 线段树扫描线
- VS调试错误:若要调试此模块,请将其项目生成配置更改为"调试"模式
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)
- 用const、enum、inline替代#define
- 用python写acm / SPOJ - 1
- yale_OS(7)——xv6中的文件系统(File System)
- 深入浅出 - Android系统移植与平台开发(十一) - Sensor HAL框架分析之一
- srm 558 backup 1 DIV 2
- Xen添加一个hypercall
- FileWriter,BufferedWriter如何输出换行?
- 如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码