假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)

简介:

 我们辛苦录入的数据都希望能有重复利用的价值,一方面这些基础数据需要有数据库级的重复利用,程序级别的重复利用,另一方面还需要直接可以方便的导出倒入的功能比较好,虽然我们自己制作的统计分析功能很强大,但是还是没有Office Excel这么灵活强大,毕竟人家是世界级别的,我们的产品暂时还没能力能跟这个匹敌,这个是实话。


  使用我们软件的客户经常需要有导出数据的实际工作需要,导出的数据功能的最重要的意图是数据能重复利用,辛辛苦苦录入了某一个系统中的数据无法重复利用,或者很难重复利用,那是很残忍的事情,是严重浪费生命的事情,我们尽量不要让客户折磨能重复利用的都重复利用。


  在走火入魔C#.NET通用权限管理系统组件源码里,有一个假导出Excel功能,可供大家参考一下。具体实现功能如下:任何信息管理系统中,若有必要都做个导出功能比较好。


  很多东西其实老早就发明了,但是真正普及都需要一个过程,100年前轿车就被发明了,到了100年后才普及得厉害,走火入魔C#.NET通用权限管理系统也一样被推广了3年左右,再过几年也会全国都普及了,大家都慢慢的认可了,就象论坛程序一个道理没几个人自己写了,直接买个现成的拿来用用就可以了,没几个SB会自己埋头苦干论坛程序了,通用权限到今天为止已经销售了200多套,未来的3年内,应该全国到处都会用这个来开发信息化管理系统,客户不会允许你瞎折腾了,浪费生命、搞得死去活来何必,直接拿过来用用配置一下,就完事了,省心省事。


  中国有几亿农民,日子过得蛮苦的,美国可能只有几百万农民就可以了,应为他们都用工具大规模批量生成,我们国内有多少开发人员都在重复劳动?我做过的10年的路又会有 多少个人走过,跟我有同样想法的人,会有多过多少,他们可能都没能坚持,没我有毅力,不怕挨骂、不怕被拍砖头、不怕别人不购买、不怕当炮灰。

  任何信息管理系统,都需要一个铜墙铁壁的经得起考验的权限配置管理工具、这个若是从头开始做,需要几年的时间完善,没必要生命浪费在这个上,每个10年以上工作经验的程序员,都能做出一个有重复利用价值的工具,我们的生产力就可以得到提高,社会就会进步。  

吉日嘎拉

导出数据功能是导出当前页面上的数据,全部导出是指所有的数据。


吉日嘎拉


导出CVS时会遇到文件名乱码、文件乱码的问题,WEB里还会遇到直接打开还是另存为的问题等。

吉日嘎拉


吉日嘎拉


代码参考如下:

全部导出:

1 private void  btnExportAll_Click( object  sender, EventArgs e)
2         {
3 //  全部导出Excel
4             DataTable dataTable  =  ServiceManager.Instance.OrganizeService.GetDT(UserInfo);
5             dataTable.DefaultView.Sort  =  BaseOrganizeTable.FieldParentId  + " " +  BaseOrganizeTable.FieldSortCode;
6 this .ExportExcel( this .grdOrganize, dataTable.DefaultView,  @" \Modules\Export\ " " 组织机构.csv " );
7         }

导出当前页面:

1 private void  btnExport_Click( object  sender, EventArgs e)
2         {
3 //  导出Excel
4 this .ExportExcel( this .grdOrganize,  @" \Modules\Export\ " " 组织机构.csv " );
5         }
1 #region  private bool FileExist(string fileName) 检查文件是否存在
2 /// <summary>
3 ///  检查文件是否存在
4 /// </summary>
5 /// <param name="fileName"> 文件名 </param>
6 /// <returns> 是否存在 </returns>
7 private bool  FileExist( string  fileName)
8         {
9 if  (System.IO.File.Exists(fileName))
10             {
11 string  targetFileName  =  System.IO.Path.GetFileName(fileName);
12 if  (MessageBox.Show(AppMessage.Format(AppMessage.MSG0236, targetFileName), AppMessage.MSG0000, MessageBoxButtons.YesNo, MessageBoxIcon.Question)  ==  DialogResult.Yes)
13                 {
14                     System.IO.File.Delete(fileName);
15                 }
16 else
17                 {
18 return true ;
19                 }
20             }
21 return false ;
22         }
23 #endregion
24
25 #region  private void ExportExcel(DataGridView dataGridView, DataView dataView, string directory, string fileName) 导出Excel
26 /// <summary>
27 ///  导出Excel
28 /// </summary>
29 /// <param name="dataGridView"> 表格控件 </param>
30 /// <param name="dataView"> 数据表格 </param>
31 /// <param name="directory"> 目录 </param>
32 /// <param name="fileName"> 文件名 </param>
33 public void  ExportExcel(DataGridView dataGridView, DataView dataView,  string  directory,  string  fileName)
34         {
35 //  开始忙了
36 this .Cursor  =  Cursors.WaitCursor;
37 string  directoryName  =  BaseSystemInfo.StartupPath  +  directory;
38 if  ( ! Directory.Exists(directoryName))
39             {
40                 Directory.CreateDirectory(directoryName);
41             }
42 string  file  =  BaseSystemInfo.StartupPath  +  directory  +  fileName;
43 if  ( ! this .FileExist(file))
44             {
45                 BaseExportCSV.ExportCSV(dataGridView, dataView, file);
46                 Process.Start(file);
47             }
48 //  已经忙完了
49 this .Cursor  =  Cursors.Default;
50         }
51 #endregion
52
53 public void  ExportExcel(DataGridView dataGridView,  string  directory,  string  fileName)
54         {
55             ExportExcel(dataGridView, (DataView)(dataGridView.DataSource), directory, fileName);
56         }


相关工具包的代码如下:

ContractedBlock.gif View Code





本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/1200716,如需转载请自行联系原作者

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
1月前
|
easyexcel
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
|
15天前
|
Python
python_读写excel、csv记录
python_读写excel、csv记录
16 0
|
8天前
|
JSON JavaScript 前端开发
使用JavaScript和XLSX.js将数据导出为Excel文件
使用JavaScript和XLSX.js将数据导出为Excel文件
19 0
|
21天前
|
easyexcel 数据库
公司大佬对excel导入、导出的封装,那叫一个秒啊
封装公司统一使用的组件的主要目标是为了简化开发人员的调用流程,避免各个项目组重复集成和编写不规范的代码。文中提到对阿里EasyExcel进行了二次封装,提供了导入和导出功能,并支持模板的导入和导出。此外,还处理了读取数据与实际保存数据不一致的情况,通过提供自定义转换器来解决。
117 0
|
21天前
|
数据库
开发指南009-从list导出excel文件
从数据库返回一般是对象的列表,平台底层提供了从list转为excel文件的方法
|
21天前
|
前端开发
开发指南007-导出Excel
平台上开发导出Excel比过去的单体架构要复杂些,因为前端和后台不在一个进程空间里。
|
27天前
|
开发者 Python
如何让excel 运行python代码
如何让excel 运行python代码
|
1月前
|
C#
C# gridControl 导出Excel
C# gridControl 导出Excel
|
1月前
|
SQL 数据库连接 数据库
【SQL Server】2. 将数据导入导出到Excel表格当中
【SQL Server】2. 将数据导入导出到Excel表格当中
47 0
|
2月前
|
NoSQL 关系型数据库 MySQL
多人同时导出 Excel 干崩服务器?怎样实现一个简单排队导出功能!
业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,还涉及文件输入、输出流的io操作,所以对服务器的性能会影响的比较大;结合以上原因,对导出操作进行排队; 刚开始拿到这个需求,第一时间想到就是需要维护一个FIFO先进先出的队列,给定队列一个固定size,在队列里面的人进行排队进行数据导出,导出完成后立马出队列,下一个排队的人进行操作;还考虑到异步,可能还需要建个文件导出表,主要记录文件的导出情况,文件的存放地址,用户根据文件列表情况下载导出文件。
多人同时导出 Excel 干崩服务器?怎样实现一个简单排队导出功能!