我正在尝试使用C#从SQL Server数据库导出数据,制作一个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()
。据我所知,没有任何一种方法对我的文件产生任何影响。
我需要做些什么才能使列和行自动调整到其内容大小?
ws.Columns["A:G"].AutoFit();
,但它也没有产生影响。 - SmarterThanYourAverageBearWorksheets[1]
是正确的工作表吗?那里实际上没有两个工作表,你是否引用了错误的工作表?我只是随口说说。 - psoshmo