【发布时间】:2015-10-31 03:42:24
【问题描述】:
我正在尝试通过使用 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();,也没有影响。 -
你能不能调用 ws.AutoFit(); ?
-
好吧,愚蠢的问题,但可能值得检查,但
Worksheets[1]是正确的工作表吗?那里实际上没有 2 个工作表,您指的是错误的工作表吗?我只是吐口水 -
您在应用自动调整后没有保存工作簿,您不应该保存更改吗?
标签: c# excel office-interop