在C#生成的Excel工作表中自动调整列宽

我试图通过使用C#从SQL Server数据库中导出数据来自动调整Excel表格中的列和行。 我已经做了一些研究,我发现的解决scheme似乎没有任何影响。

//This code produces the correct Excel File with the expected content Excel.Application ExcelApp = new Excel.Application(); ExcelApp.Application.Workbooks.Add(Type.Missing); for (int i = 1; i < myDataTable.Rows.Count + 2; i++) { for (int j = 1; j < myDataTable.Columns.Count + 1; j++) { if (i == 1) { ExcelApp.Cells[i, j] = myColumnCollection[j - 1].ToString(); } else ExcelApp.Cells[i, j] = myDataTable.Rows[i - 2][j - 1].ToString(); } } ExcelApp.ActiveWorkbook.SaveCopyAs(Application.StartupPath + "\\test.xlsx"); ExcelApp.ActiveWorkbook.Saved = true; //This code is where I tried to do the Autofit work Excel.Worksheet ws = ExcelApp.ActiveWorkbook.Worksheets[1]; Excel.Range range = ws.UsedRange; //ws.Columns.ClearFormats(); //ws.Rows.ClearFormats(); //range.EntireColumn.AutoFit(); //range.EntireRow.AutoFit(); ws.Columns.AutoFit(); ws.Rows.AutoFit(); ExcelApp.Quit(); 

我已经尝试了几个方法接近尾声。 我想我理解Range.Columns.Autofit()Range.EntireColumn.AutoFit()之间的区别,并尝试使用Worksheet.Columns.ClearFormat()之前获取UsedRange 。 据我所知,这些都没有影响我的文件。

我需要做什么才能将列和行自动填充到其内容?

谢谢德里克指出明显的。 完成修改后,我需要保存工作簿。 我只需要将我的Autofit()东西移动到保存之上。

  Excel.Worksheet ws = ExcelApp.ActiveWorkbook.Worksheets[1]; ws.Columns.AutoFit(); ws.Rows.AutoFit(); ExcelApp.ActiveWorkbook.SaveCopyAs(Application.StartupPath + "\\HaulerInfo.xlsx"); ExcelApp.ActiveWorkbook.Saved = true;