关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改
来源:互联网 发布:荣威erx5无法连接网络 编辑:程序博客网 时间:2024/04/30 06:39
如何打开Excel文件,获取需要列的数据显示到表格内做修改?
DataSet 读取表格数据 = new DataSet(); Thread 读取, 更新; int 计数 = 0, 定位 = 0, 原条件设定数 = 0, 副条件设定数 = 0;string[] 创建1 = new string[] { "[号码]", "[省]", "[市]", "[区、县]", "[镇、乡]", "[街、路、村]", "[☆]", "[自然村]", "[村民组]", "[门牌号]", "[户名]", "[导入原字符]" };
上面设置公共变量,在多个方法内使用。
如下方法:调用选择要打开的文件文件,获取文件路径和名称,传递给读取数据列方法处理;同时创建一个容纳数据空表,并创建空表列所需数量,如果读取数据返回结果不为空,创建空表所需行数绑定给控件,这样控件就有了指定列标题和行数以容纳数据;读取返回的数据表,指定需要读取的列,把数据直接赋值给控件指定单元格。
private void 数据导入() { 读取表格数据.Clear(); 地址分类树.Nodes.Clear(); 地址分类树.Nodes.Add("?"); 计数 = 0; OpenFileDialog 打开文件 = new OpenFileDialog(); 打开文件.Filter = "Excel表格文件(xls)|*.xls;|所有文件(*.*)|*.*"; if (打开文件.ShowDialog() == DialogResult.OK) { 读取表格数据 = 读取微软表格文件(打开文件.FileName); } 读取.Join(); this.Text = "[金刚般若]字符分类提取:" + 打开文件.FileName; System.Data.DataTable 结果空表 = new System.Data.DataTable(); foreach (string 数据列 in 创建1) 结果空表.Columns.Add(数据列);/*创建所需列数和名称*/ if (读取表格数据.Tables.Count > 0) { for (int 行 = 0, 数 = 读取表格数据.Tables[0].Rows.Count; 行 < 数; 行++) { 结果空表.Rows.Add(); }/*创建所需行数*/ 处理结果.DataSource = 结果空表; 处理结果.BeginInvoke(new Action(delegate() { foreach (DataRow 数据 in 读取表格数据.Tables[0].Rows) { 处理结果.Rows[计数].Cells[0].Value = 数据[5]; 处理结果.Rows[计数].Cells[10].Value = 数据[4]; 处理结果.Rows[计数].Cells[11].Value = 数据[6].ToString().Replace("/", "").Replace("//", ""); 计数++; } })); } 处理结果.Columns[11].Width = 500; 处理结果.Columns[5].Width = 105; 处理结果.Columns[6].Width = 35; 处理结果.Columns[1].Width = 55; 处理结果.Columns[2].Width = 55; int[] 菜单序 = new int[] { 3, 6, 7, 14, 15, 16, 18, 19, 20, 21, 22, 23 }; 菜单设置(菜单序, true); if (读取表格数据.Tables.Count > 0) MessageBox.Show("数据导入完成!" + 读取表格数据.Tables[0].Rows.Count.ToString() + "行数据。", "友情提示!"); }
如下方法:打开指定路径文件名读取所有数据到表并返回之前调用的方法。
这里需特别注意一点就是当浏览Excel文件方法调用(待发布)返回表中的第一行会被设为标题行,因此,如果Excel文件没标题行的话,第一行数据将别列为标题而不在表行中可以被编辑,解决方法,需要在Excel文件添加一行为第一行,并把这行第一个单元格内随便写个字符就可以了,如果不加字符的话不被读取;因为Excel文档列数量不定,所以,无法给[读取表返回]设置多少个列。
private DataSet 读取微软表格文件(string 文档名) { DataSet 读取表返回 = new DataSet(); 读取 = new Thread(delegate() { string 微软表格 = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + 文档名 + "; Extended Properties = \"Excel 12.0 Xml; HDR = No\""; OleDbConnection 表格文件 = new OleDbConnection(微软表格); 表格文件.Open();/*DataTable 工作簿名表 = 表格文件.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string 读取数据 = "SELECT * FROM [" + 工作簿名表.Rows[0][2] + "]"; 工作簿名表.Dispose();*/ string 读取数据 = "SELECT * FROM [Sheet1$]"; OleDbDataAdapter 连接表格 = new OleDbDataAdapter(读取数据, 表格文件); 连接表格.Fill(读取表返回, "读取Excel数据"); 表格文件.Close(); }); 读取.Start(); return 读取表返回; }
下次将发布接下来需要关心的问题:如何实现从字符串中提取需要的字符并赋值给指定单元格内。
没写这个程序时,直接在Excel文档中人工取值分开填到表格对应栏内,数千行数据,看得眼花缭乱,人也疲劳不堪,一天坐下来熟悉Excel操作技巧的人,要准确无误地工作,也仅能过处理近2千行左右的数据,使用软件操作起码提高5倍,边设计边运行粗略测试可达8倍左右,10倍不敢保证。
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改
- 关于Excel操作编写的一个软件设计构思案例[连载]
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何实现从字符串中提取需要的字符并赋值给指定单元格内
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何创建快捷菜单执行人机交互操作、软件初始化设置
- 关于Excel操作编写的一个软件设计构思案例[连载] --保存条件设定的另一种方式:更新与插入方法
- 关于Excel操作编写的一个软件设计构思案例[连载] --辅助功能:补全缺少数据、树定位、文本读与保存
- EXCEL表格数据导入到数据库示例,请需要的兄弟自行编写数据层!
- poi方式操作excel表格数据(数据库查询到的数据导入excel文件)
- .VC获取EXCEL 表格的总行列数 新建文件
- excel表格数据的操作
- VBA中如何打开一个文件夹内的所有EXCEL文件?
- 从网页导入表格到excel,根据关键字搜索需要的列
- QTP如何获取本地Excel文件的行和列
- VBA 从一个未打开的Excel文件中读取数据到,已打开的文件中.
- 如何将从数据库中的数据(表的形式显示出来的)导入到Excel表格中?
- 数据窗口显示的报表的形式如何导出到EXCEL文件
- 如何将Excel表格中的数据粘贴到记事本中,且每列间距都为一个空格?
- ProjectEuler_1
- 伤我最深,记得最真的句子:QQ伤感日志
- 旧工程适应 iphone5 坐标的改变
- 2012-10-21
- R for windows连接oracle数据库
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改
- 求职那些事十三
- WPF中如何获取鼠标相对于桌面的坐标
- 写给那些分手之后还留在原地的人:伤感日志
- 算式计算器C++实现代码(顺序栈结构 增加了一些功能 求指教)
- 求助 c小知识
- android进程间通信——aidl(Android Interface Definition Language)
- Qt最新下载地址
- HDU2167 状态压缩DP