我正在从应用程序中创建Excel,我想获取具有自动调整列大小的Excel文件。
在工作簿中填写表格后,我使用以下方法设置列:
public void AutoFitColumns(Sheet sheet)
{
//get all cells in sheet
IEnumerable<Cell> cells = GetCells(sheet);
//find max column number
int maxColumnIndex = cells.Select(a => GetColumnIndex(a.CellReference))
.Where(a => a.HasValue)
.Select(a => a.Value)
.Distinct()
.Max();
Worksheet worksheet = GetWorkSheetPart(sheet).Worksheet;
// Check if the column collection exists
Columns cs = worksheet.Elements<Columns>().FirstOrDefault();
if (cs == null)
{
// If Columns appended to worksheet after sheetdata Excel will throw an error.
SheetData sd = worksheet.Elements<SheetData>().FirstOrDefault();
if (sd != null)
cs = worksheet.InsertBefore(new Columns(), sd);
else
{
cs = new Columns();
worksheet.Append(cs);
}
}
Column c = new Column
{
Min = (uint)1,
Max = (uint)maxColumnIndex,
Width = 100D,
CustomWidth = true,
BestFit = true
};
cs.Append(c);
}
由于某种原因,我没有看到BestFit列的内容。我找到https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/cc802410(v=office.14)?redirectedfrom=MSDN的描述位置:
标记,指示指定的列是否设置为“最适合”。 在以下情况下,“最适合”设置为true:列 用户从未手动设置宽度,并且列宽为 不是默认宽度'最佳匹配'表示输入数字时 放入“最适合”列中包含的单元格中,列宽应 自动调整大小以显示数字。 [注意:在最合适的情况下, 列宽度一定不能变小,而只能变大。结束语]
因此,我尝试了几种方法来应用自动列宽,如文档中所述和“尝试/错误”方法所述
有人知道为什么这不起作用吗?
我的步骤如下: