VB6.0中如何将DataGridView导出为TXT格式?
如何在VB6.0中将DataGrid导出为TXT格式
嘿,先纠正个小细节:VB6里原生的表格控件是DataGrid,而DataGridView是.NET(比如VB.NET)里的控件,我猜你可能是笔误啦。不过没关系,结合你提供的绑定记录集的代码,我给你两种实用的导出方案,直接就能用:
方案1:直接从绑定的记录集(rsDTS)导出(更高效)
既然你的DataGrid已经绑定到rsDTS记录集了,直接操作记录集导出会比遍历控件更快,尤其是数据量较大的时候:
首先,你需要先在工程里添加CommonDialog控件(用来让用户选择保存路径),然后可以写一个导出的子过程:
Private Sub ExportToTxtFromRS() Dim filePath As String Dim fNum As Integer Dim i As Integer ' 让用户选择保存的TXT文件路径 CommonDialog1.Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*" CommonDialog1.ShowSave If CommonDialog1.FileName = "" Then Exit Sub filePath = CommonDialog1.FileName ' 打开文件准备写入 fNum = FreeFile() Open filePath For Output As #fNum ' 先写入表头(记录集的字段名) For i = 0 To rsDTS.Fields.Count - 1 If i > 0 Then Print #fNum, vbTab; ' 用制表符分隔列,也可以换成逗号"," Print #fNum, rsDTS.Fields(i).Name; Next i Print #fNum, ' 换行 ' 写入记录内容 rsDTS.MoveFirst Do While Not rsDTS.EOF For i = 0 To rsDTS.Fields.Count - 1 If i > 0 Then Print #fNum, vbTab; ' 处理空值,避免写入空内容时出现问题 If IsNull(rsDTS.Fields(i).Value) Then Print #fNum, ""; Else Print #fNum, rsDTS.Fields(i).Value; End If Next i Print #fNum, ' 换行 rsDTS.MoveNext Loop ' 关闭文件 Close #fNum MsgBox "导出完成!文件已保存到:" & filePath, vbInformation End Sub
方案2:遍历DataGrid控件导出
如果非要直接操作DataGrid控件(比如你做了一些界面上的修改,记录集里没有同步),可以用这个方法:
Private Sub ExportToTxtFromDataGrid() Dim filePath As String Dim fNum As Integer Dim i As Integer, j As Integer ' 选择保存路径 CommonDialog1.Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*" CommonDialog1.ShowSave If CommonDialog1.FileName = "" Then Exit Sub filePath = CommonDialog1.FileName fNum = FreeFile() Open filePath For Output As #fNum ' 写入表头(DataGrid的列标题) For i = 0 To DataGrid1.Columns.Count - 1 If i > 0 Then Print #fNum, vbTab; Print #fNum, DataGrid1.Columns(i).Caption; Next i Print #fNum, ' 写入行内容 DataGrid1.Row = 0 ' 定位到第一行 Do While Not DataGrid1.BOF And Not DataGrid1.EOF For j = 0 To DataGrid1.Columns.Count - 1 If j > 0 Then Print #fNum, vbTab; ' 处理单元格空值 If DataGrid1.Columns(j).Value = "" Or IsNull(DataGrid1.Columns(j).Value) Then Print #fNum, ""; Else Print #fNum, DataGrid1.Columns(j).Value; End If Next j Print #fNum, DataGrid1.Row = DataGrid1.Row + 1 ' 切换到下一行 Loop Close #fNum MsgBox "导出成功!", vbInformation End Sub
使用说明
- 记得在工程里添加
CommonDialog控件:打开VB6的【工程】菜单 → 【部件】 → 勾选【Microsoft Common Dialog Control 6.0】,点击确定。 - 你可以把这两个过程绑定到一个按钮的Click事件里,比如:
Private Sub cmdExport_Click() ' 选其中一个方案就行 ExportToTxtFromRS ' 或者 ExportToTxtFromDataGrid End Sub
- 代码里用的是**制表符(vbTab)**作为列分隔符,如果你想要逗号分隔(CSV格式,也能直接用TXT保存),把
vbTab换成","就行。
内容的提问来源于stack exchange,提问作者SETYO
相关产品推荐
相关产品推荐

