VB高手请进.使用VB6.0的DATAGRID控件输出到EXCEL里时只显示可见行,请问如何显示所有行,请高手给我代码好吗

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:13:30
我的关键代码如下.

Private Sub Command1_Click()
Dim i, j As Integer
Dim xlApplication As Excel.Application, xlWorkbook As Excel.Workbook, xlSheet
On Error Resume Next
Set xlApplication = GetObject(, "Excel.Application")
If Err.Number <> 0 Then Set xlApplication = CreateObject("Excel.Application")
Set xlWorkbook = xlApplication.Workbooks.Add
Set xlSheet = xlWorkbook.ActiveSheet
For i = 1 To DataGrid1.Columns.Count
xlSheet.Cells(1, i) = DataGrid1.Columns(i - 1).Caption
For j = 0 To DataGrid1.VisibleRows - 1
xlSheet.Cells(j + 2, i) = DataGrid1.Columns(i - 1).CellText(DataGrid1.RowBookmark(j))
Next j
Next i

我知道肯定是这里的VISIBLEROWS的问题,但是DATAGRID里没有DATAGRID1.ROWS这个属性啊,有什么办法能输出所有行的,我快疯了.跪求代码...

我是直接对ADOC操作的,因此它不会受rows 的visible属性影响
因一般来说,每个DataGrid会对应一个ADODC,或RecordSet对象作为数据源。
直接对它们操作就行了。这样有个好处就是可以根据字段的属性格式化相应的列,如将调整日期或日期的显示格式。

'输出表头
For i = 0 To Me.Adodc1.Recordset.Fields.Count - 1
'设置列名
strColName1 = Chr(65 + i) & "1"
oSheet.Range(strColName1).Value = Me.DataGrid1.Columns(i).Caption

'据DataGrid中的宽度设置EXCEL列宽
StrColName = Chr(65 + i) & ":" & Chr(65 + i)
oSheet.Columns(StrColName).ColumnWidth = Int(Me.DataGrid1.Columns(i).Width / 90)

Next i

'输出内容
Do Until Me.Adodc1.Recordset.EOF
j = j + 1

For i = 0 To Me.Adodc1.Recordset.Fields.Count - 1
StrColName = Chr(65 + i) & CStr(j + 1)
If Not IsNull(Me.DataGrid1.Columns(i)) And Me.DataGrid1.Columns(i) <> "" Then

'根据列的属性对表格数据作相应格式化处理