通用excel数据导出/转换(一)
2016-02-22 22:25
483 查看
跟excel有关的开发,c#应该是不错的选择,毕竟都是windows的程序。写了一段时间java,突然又写c#,会发现继承、抛出异常之类的东西好不适应。
这次遇到一个使用历史大约有10年的excel工作簿,表大小大概在400列6000行的样子——是的我以为是400列,实际上这些列就像课程,不同专业的学生会修不同的课,一共有400门课,而且每个学生每门课还有不同的成绩。。。这些都在一个表里头,一个表里头,一个表里头——不然还要我转什么excel的数据。
大概来说任务就是把一个有一定规范的excel表转换为我们通常在数据库上看到的二维表。400列的数据肯定不会整到一个表里面,应该像分学院一样把400列拆分为若干组,每组再独立建表。
这个功能看似不难,而且数据量并不是很大,主流的数据库性能是够的,但是也不能像面向过程那样流水式的码出来。暂时觉得这可以用三篇文章来说说
第一篇就写写类的设计。
不多说先来看图,不知道这画得规范不规范
类的继承不应该是从一般到特殊的过程,而是功能封装的过程。这里用三个类来封装:
excel_basicReader:根据传入的文件路径获得excel文件内数据的基本信息,包括表名、给个表的列数、行数
excel_MySql_covertSettings:这次开发用的是MySql,每个表设置多少列、多少行、那个属性是主键等,都放在这个类
excel_tableCreater:创建MySql的空表、读取excel并插入到MySql的表中
按照这样设计三个类我是出于这样考虑的:
excel_basicReader做好对excel的最基本抽象,要获取指定单元格的值时excel_basicReader中的OleConn就可以结合sql语句来查询了
这次用的是MySql,以后如果要使用别的数据库,有关的设定就交给excel_MySql_covertSettings这一层来修改,excel_tableCreater中只需把相应数据库的sql语句格式修改一下就行了
excel_tableCreater中用一个私有方法MysqlExcuter(string strsql),传入sql语句,也算是很好的节省了需要sql语句的代码
嗯,类的设计先说这么多,感觉总有许多不成熟的地方,大家有什么意见欢迎评论或私信我
这次遇到一个使用历史大约有10年的excel工作簿,表大小大概在400列6000行的样子——是的我以为是400列,实际上这些列就像课程,不同专业的学生会修不同的课,一共有400门课,而且每个学生每门课还有不同的成绩。。。这些都在一个表里头,一个表里头,一个表里头——不然还要我转什么excel的数据。
大概来说任务就是把一个有一定规范的excel表转换为我们通常在数据库上看到的二维表。400列的数据肯定不会整到一个表里面,应该像分学院一样把400列拆分为若干组,每组再独立建表。
这个功能看似不难,而且数据量并不是很大,主流的数据库性能是够的,但是也不能像面向过程那样流水式的码出来。暂时觉得这可以用三篇文章来说说
第一篇就写写类的设计。
不多说先来看图,不知道这画得规范不规范
类的继承不应该是从一般到特殊的过程,而是功能封装的过程。这里用三个类来封装:
excel_basicReader:根据传入的文件路径获得excel文件内数据的基本信息,包括表名、给个表的列数、行数
excel_MySql_covertSettings:这次开发用的是MySql,每个表设置多少列、多少行、那个属性是主键等,都放在这个类
excel_tableCreater:创建MySql的空表、读取excel并插入到MySql的表中
按照这样设计三个类我是出于这样考虑的:
excel_basicReader做好对excel的最基本抽象,要获取指定单元格的值时excel_basicReader中的OleConn就可以结合sql语句来查询了
这次用的是MySql,以后如果要使用别的数据库,有关的设定就交给excel_MySql_covertSettings这一层来修改,excel_tableCreater中只需把相应数据库的sql语句格式修改一下就行了
excel_tableCreater中用一个私有方法MysqlExcuter(string strsql),传入sql语句,也算是很好的节省了需要sql语句的代码
嗯,类的设计先说这么多,感觉总有许多不成熟的地方,大家有什么意见欢迎评论或私信我
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- 使用Python生成Excel格式的图片
- 如何重装TCP/IP协议
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 我是运营,我没有假期
- Windows 8 官方高清壁纸欣赏与下载
- MySQL 备份和恢复策略
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘