假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)...
?我們辛苦錄入的數據都希望能有重復利用的價值,一方面這些基礎數據需要有數據庫級的重復利用,程序級別的重復利用,另一方面還需要直接可以方便的導出倒入的功能比較好,雖然我們自己制作的統計分析功能很強大,但是還是沒有Office Excel這么靈活強大,畢竟人家是世界級別的,我們的產品暫時還沒能力能跟這個匹敵,這個是實話。
? 使用我們軟件的客戶經常需要有導出數據的實際工作需要,導出的數據功能的最重要的意圖是數據能重復利用,辛辛苦苦錄入了某一個系統中的數據無法重復利用,或者很難重復利用,那是很殘忍的事情,是嚴重浪費生命的事情,我們盡量不要讓客戶折磨能重復利用的都重復利用。
? 在走火入魔C#.NET通用權限管理系統組件源碼里,有一個假導出Excel功能,可供大家參考一下。具體實現功能如下:任何信息管理系統中,若有必要都做個導出功能比較好。
? 很多東西其實老早就發明了,但是真正普及都需要一個過程,100年前轎車就被發明了,到了100年后才普及得厲害,走火入魔C#.NET通用權限管理系統也一樣被推廣了3年左右,再過幾年也會全國都普及了,大家都慢慢的認可了,就象論壇程序一個道理沒幾個人自己寫了,直接買個現成的拿來用用就可以了,沒幾個SB會自己埋頭苦干論壇程序了,通用權限到今天為止已經銷售了200多套,未來的3年內,應該全國到處都會用這個來開發信息化管理系統,客戶不會允許你瞎折騰了,浪費生命、搞得死去活來何必,直接拿過來用用配置一下,就完事了,省心省事。
? 中國有幾億農民,日子過得蠻苦的,美國可能只有幾百萬農民就可以了,應為他們都用工具大規模批量生成,我們國內有多少開發人員都在重復勞動?我做過的10年的路又會有 多少個人走過,跟我有同樣想法的人,會有多過多少,他們可能都沒能堅持,沒我有毅力,不怕挨罵、不怕被拍磚頭、不怕別人不購買、不怕當炮灰。
? 任何信息管理系統,都需要一個銅墻鐵壁的經得起考驗的權限配置管理工具、這個若是從頭開始做,需要幾年的時間完善,沒必要生命浪費在這個上,每個10年以上工作經驗的程序員,都能做出一個有重復利用價值的工具,我們的生產力就可以得到提高,社會就會進步。 ?
導出數據功能是導出當前頁面上的數據,全部導出是指所有的數據。
導出CVS時會遇到文件名亂碼、文件亂碼的問題,WEB里還會遇到直接打開還是另存為的問題等。
代碼參考如下:
全部導出:
1privatevoid?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;
6this.ExportExcel(this.grdOrganize, dataTable.DefaultView,?@"\Modules\Export\",?"組織機構.csv");
7?? ? ? ?}
導出當前頁面:
1privatevoid?btnExport_Click(object?sender, EventArgs e)2?? ? ? ?{
3//?導出Excel
4this.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>
7privatebool?FileExist(string?fileName)
8?? ? ? ?{
9if?(System.IO.File.Exists(fileName))
10?? ? ? ? ? ?{
11string?targetFileName?=?System.IO.Path.GetFileName(fileName);
12if?(MessageBox.Show(AppMessage.Format(AppMessage.MSG0236, targetFileName), AppMessage.MSG0000, MessageBoxButtons.YesNo, MessageBoxIcon.Question)?==?DialogResult.Yes)
13?? ? ? ? ? ? ? ?{
14?? ? ? ? ? ? ? ? ? ?System.IO.File.Delete(fileName);
15?? ? ? ? ? ? ? ?}
16else
17?? ? ? ? ? ? ? ?{
18returntrue;
19?? ? ? ? ? ? ? ?}
20?? ? ? ? ? ?}
21returnfalse;
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>
33publicvoid?ExportExcel(DataGridView dataGridView, DataView dataView,?string?directory,?string?fileName)
34?? ? ? ?{
35//?開始忙了
36this.Cursor?=?Cursors.WaitCursor;
37string?directoryName?=?BaseSystemInfo.StartupPath?+?directory;
38if?(!Directory.Exists(directoryName))
39?? ? ? ? ? ?{
40?? ? ? ? ? ? ? ?Directory.CreateDirectory(directoryName);
41?? ? ? ? ? ?}
42string?file?=?BaseSystemInfo.StartupPath?+?directory?+?fileName;
43if?(!this.FileExist(file))
44?? ? ? ? ? ?{
45?? ? ? ? ? ? ? ?BaseExportCSV.ExportCSV(dataGridView, dataView, file);
46?? ? ? ? ? ? ? ?Process.Start(file);
47?? ? ? ? ? ?}
48//?已經忙完了
49this.Cursor?=?Cursors.Default;
50?? ? ? ?}
51#endregion
52
53publicvoid?ExportExcel(DataGridView dataGridView,?string?directory,?string?fileName)
54?? ? ? ?{
55?? ? ? ? ? ?ExportExcel(dataGridView, (DataView)(dataGridView.DataSource), directory, fileName);
56?? ? ? ?}
相關工具包的代碼如下:
View Code本文轉自 jirigala 51CTO博客,原文鏈接:http://blog.51cto.com/2347979/1200716,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一、MySQL数据库基础
- 下一篇: yum标准化安装nginx最新版