在c#生成的Excel表格中自动调整列宽度
本文关键字:调整 表格 Excel | 更新日期: 2023-09-27 18:06:57
我正试图自动适配我通过从SQL Server数据库导出数据,使用c#制作的Excel表中的列和行。我做了一些研究,我找到的解决方案似乎没有任何影响。
//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()
的区别,并且在得到UsedRange
之前和之后都尝试过使用Worksheet.Columns.ClearFormat()
。据我所知,这些都没有影响到我的文件。
我需要做些什么才能使列和行自动适配到它们的内容?
感谢Derek指出了显而易见的事实。在完成修改后,我需要保存工作簿。我只需要把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;