Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在以编程方式创建的xlsx文件中设置单元格的宽度?_C#_.net_Xlsx - Fatal编程技术网

C# 如何在以编程方式创建的xlsx文件中设置单元格的宽度?

C# 如何在以编程方式创建的xlsx文件中设置单元格的宽度?,c#,.net,xlsx,C#,.net,Xlsx,我有一个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.Applicati

我有一个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();
//获取文件名
字符串filepath=args[0]。ToString();
//将文件转换为数据集
DataSet ds=Convert(filepath.ToString(),“tblCustomers”,“\t”);
//创建excell对象
Excel.Application Excel=新建Excel.Application();
//创建工作簿
Excel.Workbook工作簿=Excel.Workbooks.Add();
//设置活动工作表
Excel.Worksheet sheet=workBook.ActiveSheet;
int i=0;
foreach(ds.Tables[0].行中的DataRow行)
{                              
对于(int j=0;j


您可以在Excel中记录宏,然后查看生成的代码(对象模型相同)。

要自动将其内容的所有列宽设置为“正确大小”,您可以通过调用AutoFit来处理此问题,如下所示:

_xlSheet.Columns.AutoFit();
但是,有时一列中的一个或两个“rogue”值会使该列变宽,您必须将该列向左拖动,以便查看更多数据。您可以通过使用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;
注意:作为一个额外的细节,您可以像这样使用过长的内容换行(如果它们位于合并(多行)范围内,则特别有用)(其中“范围”是填充列时定义的范围):

注意:您需要添加Microsoft.Offie.Interop.Excel程序集才能运行此代码

_xlSheet.Columns.AutoFit();
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;
range.WrapText = true;