如何在以编程方式创建的xlsx文件中设置单元格的宽度
本文关键字:文件 设置 单元格 xlsx 编程 方式 创建 | 更新日期: 2023-09-27 18:22:04
我有一个C#代码,它将数据集转换为xlsx。是否有办法设置创建的xlsx文件的工作表的单元格或列宽?
//Get the filename
String filepath = args[0].ToString();
//Convert the file to dataset
DataSet ds = Convert(filepath.ToString(), "tblCustomers", "'t");
//Create the excell object
Excel.Application excel = new Excel.Application();
//Create the workbook
Excel.Workbook workBook = excel.Workbooks.Add();
//Set the active sheet
Excel.Worksheet sheet = workBook.ActiveSheet;
int i = 0;
foreach (DataRow row in ds.Tables[0].Rows)
{
for (int j = 0; j < row.ItemArray.Length; j++)
{
sheet.Cells[i + 1, j + 1] = row[j];
}
i++;
}
workBook.SaveAs(@"C:'fromCsv.xlsx");
workBook.Close();
sheet.Columns["D:D"].ColumnWidth = 17.57;
或
sheet.Columns[1].ColumnWidth = 17.57;
您可以在Excel中记录宏,然后查看生成的代码(对象模型相同)。
要自动将所有列宽设置为其内容的"正确大小",可以通过调用AutoFit来处理,如下所示:
_xlSheet.Columns.AutoFit();
然而,有时一列中的一两个"无赖"值会使该列超宽,您必须将该列向左拖动,以便查看更多数据。通过同时使用"自动调整",然后指定任何有问题的列的宽度,可以克服这一难题。以下是如何做到这一点的代码,它假设列1是要控制的列,42是您希望它假设的宽度:
private Worksheet _xlSheet;
private static readonly int ITEMDESC_COL = 1;
private static readonly int WIDTH_FOR_ITEM_DESC_COL = 42;
. . .
_xlSheet.Columns.AutoFit();
// Now take back the wider-than-the-ocean column
((Range)_xlSheet.Cells[ITEMDESC_COL, ITEMDESC_COL]).EntireColumn.ColumnWidth = WIDTH_FOR_ITEM_DESC_COL;
注意:作为一个额外的细节,您可以使用超长的内容换行(如果它们在Merged(多行)范围内,则特别有用),如下所示(其中"range"是您在填充列时定义的range):
range.WrapText = true;
注意:您需要添加Microsoft.Offie.Interop.Excel程序集,此代码才能工作。