Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# NPOI自动调整列大小_C#_.net_Npoi - Fatal编程技术网

C# NPOI自动调整列大小

C# NPOI自动调整列大小,c#,.net,npoi,C#,.net,Npoi,我正在尝试使用NPOI将一些内容写入excel文件。但是,当使用自动调整列大小方法时,会导致错误“参数无效”。这种情况仅适用于包含大量数据的工作表。下面是我用来做这项工作的代码 public void CloseDatabaseLogFile() { try { FileStream sw = File.Create(excelSheetPath); oSheet.AutoSizeColumn(0); oSheet.SetColu

我正在尝试使用NPOI将一些内容写入excel文件。但是,当使用自动调整列大小方法时,会导致错误“参数无效”。这种情况仅适用于包含大量数据的工作表。下面是我用来做这项工作的代码

public void CloseDatabaseLogFile()
{
    try
    {
        FileStream sw = File.Create(excelSheetPath);

        oSheet.AutoSizeColumn(0);
        oSheet.SetColumnWidth(1, 8400);

        oSheet.AutoSizeColumn(2);
        oSheet.AutoSizeColumn(3);
        oSheet.AutoSizeColumn(4);
        oSheet.AutoSizeColumn(5);
        oSheet.AutoSizeColumn(6);
        oSheet.AutoSizeColumn(7);
        oSheet.AutoSizeColumn(8);
        oSheet.AutoSizeColumn(9);
        oSheet.AutoSizeColumn(10);

        workbook.Write(sw);
        sw.Close();
    }
    catch (Exception e)
    {
        throw e;
    }
}

您可以在AutoSize调用之间使用
GC.Collect()
()解决此问题。这不是最好的解决方案,但NPOI(2.0.1)似乎没有处理自动调整大小功能所需的位图对象

在一个大型Excel文件中自动调整10列的大小时,我遇到了同样的问题。请参见下面我的固定代码:

int numberOfColumns=sheet.GetRow(rowOffSet).PhysicalNumberOfCells;
对于(int i=1;i有两种解决方案:
一,

for(int i=0;i
二,

for(int i=0;i
你有没有想过这个问题。我在导出一个包含多行的网格时遇到了这个问题。System.ArgumentException:参数无效。在System.Drawing.Bitmap..ctor(Int32宽度,Int32高度,PixelFormat格式)在System.Drawing.Bitmap..ctor(Int32宽度,Int32高度)在NPOI.SS.Util.SheetUtil.GetCellWidthNPOI.SS.Util.SheetUtil.GetColumnWidth(ISheet sheet,Int32 column,Boolean useMergedCells)处的(ICell单元格,Int32 defaultCharWidth,DataFormatter格式化程序,Boolean useMergedCells),NPOI.HSSF.UserModel.HSSFSheet.AutoSizeColumn(Int32 column,Boolean useMergedCells)
System.ArgumentException: Parameter is not valid.
   at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
   at NPOI.SS.Util.SheetUtil.GetCellWidth(ICell cell, Int32 defaultCharWidth, DataFormatter formatter, Boolean useMergedCells)
   at NPOI.SS.Util.SheetUtil.GetColumnWidth(ISheet sheet, Int32 column, Boolean useMergedCells)
   at NPOI.XSSF.UserModel.XSSFSheet.AutoSizeColumn(Int32 column, Boolean useMergedCells)
for (int i = 0; i < columnNames.Count; i++)
{
    sheet.AutoSizeColumn(i);
}
for (int i = 0; i < columnNames.Count; i++)
{
    sheet.SetColumnWidth(i, (columns[columnNames[i]].ToString().Length) * 2 * 256);
}