小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

.net從DataGridView復(fù)制到Excel.代碼實(shí)現(xiàn)。解決亂碼問(wèn)題 (轉(zhuǎn))

 franklinfj 2013-06-26

.net從DataGridView復(fù)制到Excel.代碼實(shí)現(xiàn)。解決亂碼問(wèn)題

在Winform 的開(kāi)發(fā)中,經(jīng)常要做Excel的報(bào)表,有些報(bào)表很復(fù)雜,也有簡(jiǎn)單的。

復(fù)雜的就不講了,簡(jiǎn)單的比如說(shuō):要次一個(gè)DataGridView中的數(shù)據(jù)原板原樣的放到Excel中。

通常從DataGridView中取數(shù)據(jù)都是逐行讀取。如果這樣做,遇到數(shù)據(jù)量比較大的時(shí)候,速度會(huì)變得很慢。

不符合需求。

在.net中DataGridView已經(jīng)封裝好復(fù)制的功能??梢灾苯诱{(diào)用。

貼一段核心代碼:使用pubs數(shù)據(jù)庫(kù)中的jobs資料表

在使用粘貼板的時(shí)候有可能亂碼(因?yàn)镈ataGridView和Excel的格式是不一樣的。)

解決方法 在粘貼的時(shí)候使用Excel中的選擇性粘貼功能。 

            '下面這一行,相當(dāng)于在Excel中點(diǎn)擊右鍵->選擇性粘貼->文本
            objexcel.ActiveSheet.PasteSpecial(Format:="文本", Link:=False, DisplayAsIcon:=False)

運(yùn)行效果圖:

DataGridView中復(fù)制數(shù)據(jù)到Excel

源代碼:

  1. Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click  
  2.     Try  
  3.         Dim filepath As String = Application.StartupPath & "/" & Now.ToFileTimeUtc & ".xls"  
  4.         Dim objexcel As New Excel.Application()  
  5.         Dim objbook As Excel.Workbook = objexcel.Workbooks.Add()  
  6.         objbook.SaveAs(filepath)  
  7.   
  8.         '設(shè)置復(fù)制模式為:連同行頭和表頭一起復(fù)制   
  9.         Me.DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText  
  10.         '如果不需要復(fù)制行頭,就把它隱藏掉   
  11.         Me.DataGridView1.RowHeadersVisible = False  
  12.         '選中DataGridView1的所有內(nèi)容   
  13.         Me.DataGridView1.SelectAll()  
  14.         '判斷DataGridView1中是否有選中單元格(與上面好像有點(diǎn)矛盾,自行處理)   
  15.         If Me.DataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0 Then  
  16.             Clipboard.SetDataObject(Me.DataGridView1.GetClipboardContent())  
  17.         End If  
  18.          '直接在Excel中粘貼   
  19.         'objexcel.ActiveSheet.paste()   
  20.         '為防止亂碼。使用選擇性粘貼   
  21.         '下面這一行,相當(dāng)于在Excel中點(diǎn)擊右鍵->選擇性粘貼->文本   
  22.         objexcel.ActiveSheet.PasteSpecial(Format:="文本", Link:=False, DisplayAsIcon:=False)  
  23.         '選中Excel所有單元格   
  24.         objexcel.Cells.Select()  
  25.         '不自動(dòng)換行   
  26.         objexcel.Selection.WrapText = False  
  27.         '自動(dòng)調(diào)整列寬   
  28.         objexcel.Columns.AutoFit()  
  29.         '儲(chǔ)存   
  30.         objbook.Save()  
  31.         '退出   
  32.         objbook.Close()  
  33.         objexcel.Quit()  
  34.         objbook = Nothing  
  35.         objexcel = Nothing  
  36.         killexcel()  
  37.         '提示打開(kāi)文件   
  38.         If MessageBox.Show("檔案儲(chǔ)存在:" & filepath & ",你要打開(kāi)嗎?""提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) = Windows.Forms.DialogResult.Yes Then  
  39.             Process.Start(filepath)  
  40.         End If  
  41.     Catch ex As Exception  
  42.         killexcel()  
  43.         MsgBox(ex.Message)  
  44.     End Try  
  45. End Sub  
  46.   
  47. '殺掉程序創(chuàng)建的Excel進(jìn)程   
  48. Private Sub killexcel()  
  49.     Try  
  50.         For Each proc As Process In Process.GetProcessesByName("EXCEL")  
  51.             If proc IsNot Nothing AndAlso proc.MainWindowTitle = "" Then  
  52.                 proc.Kill()  
  53.             End If  
  54.         Next  
  55.     Catch ex As Exception  
  56.         Throw ex  
  57.     End Try  
  58. End Sub  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多