使用VisualBasic从Access数据库导出数据至Excel时记录丢失问题求助
问题分析与修复
你代码里的核心问题是循环起始索引错误:
- DataTable的
Rows集合从索引0开始,而你外层循环从i=1启动,直接跳过了第一条记录 - 当数据库仅含1条记录时,
ds.Tables(0).Rows.Count等于1,循环条件变为i=1 To 0,循环完全不会执行,导致Excel文件为空
修复后的代码:
For i = 0 To ds.Tables(0).Rows.Count - 1 For j = 0 To ds.Tables(0).Columns.Count - 1 xlWorkSheet.Cells(i + 1, j + 1) = ds.Tables(0).Rows(i).Item(j) Next Next
额外提示
- 如果需要导出表头,可以在循环前单独处理:遍历
Columns集合,把列名写入Excel第一行(例如xlWorkSheet.Cells(1, j+1) = ds.Tables(0).Columns(j).ColumnName,此时数据行要从第2行开始) - 处理数据库空值时建议加判断,比如
If Not IsDBNull(ds.Tables(0).Rows(i).Item(j)) Then xlWorkSheet.Cells(i + 1, j + 1) = ds.Tables(0).Rows(i).Item(j),避免Excel写入无效值
内容的提问来源于stack exchange,提问作者Livio
相关产品推荐
相关产品推荐

