You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Office Interop导出DataGridView到Word表格时数据错位求助

第二张图 - 导出到MS Word表格的效果
DataGridView输入源数据

问题原因

  • Office Interop 中 Word 表格的行、列索引是从1开始计数的,你当前代码使用从0开始的索引直接赋值,会出现单元格定位偏移,甚至触发索引越界错误。
  • 若你的DataGridView开启了「允许用户添加行」属性,dataGridViewObjednavka.RowCount会包含底部的空白待输入行,创建表格时会多生成空白行,也会导致内容匹配错位。

修正后代码

// 先排除DataGridView的空白新增行,计算实际有效行数
int validRowCount = dataGridViewObjednavka.AllowUserToAddRows ? 
    dataGridViewObjednavka.RowCount - 1 : dataGridViewObjednavka.RowCount;
// 创建表格时使用有效行数
Table thirdTable = document.Tables.Add(para3.Range, validRowCount, dataGridViewObjednavka.ColumnCount, ref missing, ref missing);
// 开启表格自动调整内容适配,避免内容挤压错位
thirdTable.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitContent);

for (int i = 0; i < validRowCount; i++)
{
    for (int j = 0; j < dataGridViewObjednavka.Columns.Count; j++)
    {
        // Word表格单元格索引从1开始,所以行号、列号都要+1
        thirdTable.Cell(i + 1, j + 1).Range.Text = Convert.ToString(dataGridViewObjednavka.Rows[i].Cells[j].Value);
    }
}

额外优化建议

  • 赋值前先判断dataGridViewObjednavka.Rows[i].Cells[j].Value是否为null,避免直接输出null字符串到表格中
  • 如果导出后仍然存在对齐偏差,可以给单元格的ParagraphFormat设置对齐属性,统一内容对齐样式

内容的提问来源于stack exchange,提问作者Matis_RnK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:57:01