Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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# 如何使用Epplus c在同一轮廓中添加多个折叠#_C#_Excel_Epplus - Fatal编程技术网

C# 如何使用Epplus c在同一轮廓中添加多个折叠#

C# 如何使用Epplus c在同一轮廓中添加多个折叠#,c#,excel,epplus,C#,Excel,Epplus,我需要在同一个大纲级别上进行多次折叠 for (var j = 0; j <= 2; j++) { workSheet.Row(j).OutlineLevel = 1; workSheet.Row(j).Collapsed = true; workSheet.Row(j+3).OutlineLevel = 1; workSheet.Row(j+3).Collapsed = true; } for(var j=0;j我认为在Excel中实现这一点的

我需要在同一个大纲级别上进行多次折叠

 for (var j = 0; j <= 2; j++)
  {
    workSheet.Row(j).OutlineLevel = 1;
    workSheet.Row(j).Collapsed = true;
    workSheet.Row(j+3).OutlineLevel = 1;
    workSheet.Row(j+3).Collapsed = true;
  }

for(var j=0;j我认为在Excel中实现这一点的唯一方法(暂时将ePlus放在一边)是在组之间创建一个间隙。在ePlus中,您可以执行以下操作:

[TestMethod]
public void Row_Multiple_Grouping_Test()
{
    //https://stackoverflow.com/questions/57925761/how-to-add-multiple-collapse-in-same-outline-using-epplus-c-sharp

    //Throw in some data
    var dataTable = new DataTable("tblData");
    dataTable.Columns.AddRange(new[]
    {
        new DataColumn("Header", typeof (string)),
        new DataColumn("Col1", typeof (int)),
        new DataColumn("Col2", typeof (int)),
        new DataColumn("Col3", typeof (object))
    });

    for (var i = 0; i < 10; i++)
    {
        var row = dataTable.NewRow();
        row[0] = $"Header {i}";
        row[1] = i; row[2] = i * 10;
        row[3] = Path.GetRandomFileName();
        dataTable.Rows.Add(row);
    }

    //Create a test file
    var fi = new FileInfo(@"c:\temp\Row_Multiple_Grouping_Test.xlsx");
    if (fi.Exists)
        fi.Delete();

    using (var pck = new ExcelPackage(fi))
    {
        var worksheet = pck.Workbook.Worksheets.Add("Sheet1");
        worksheet.Cells.LoadFromDataTable(dataTable, true);

        //Create the grouping
        for (var i = 2; i <= 11; i++)
        {
            worksheet.Row(i).OutlineLevel = 1;
            worksheet.Row(i).Collapsed = true;
        }

        //Create a gap - cant shrink or hide it because it hides the collapse button in GUI
        worksheet.InsertRow(7, 1);

        pck.Save();
    }
}
[TestMethod]
公共无效行\u多个\u分组\u测试()
{
//https://stackoverflow.com/questions/57925761/how-to-add-multiple-collapse-in-same-outline-using-epplus-c-sharp
//加入一些数据
var数据表=新数据表(“tblData”);
dataTable.Columns.AddRange(新[]
{
新数据列(“标题”,类型(字符串)),
新数据列(“Col1”,typeof(int)),
新数据列(“Col2”,typeof(int)),
新数据列(“Col3”,类型(对象))
});
对于(变量i=0;i<10;i++)
{
var row=dataTable.NewRow();
行[0]=“头{i}”;
第[1]=i行;第[2]=i*10行;
行[3]=Path.GetRandomFileName();
dataTable.Rows.Add(行);
}
//创建一个测试文件
var fi=新文件信息(@“c:\temp\Row\u Multiple\u Grouping\u Test.xlsx”);
如果(fi.存在)
fi.删除();
使用(var pck=新的ExcelPackage(fi))
{
var工作表=pck.工作簿.Worksheets.Add(“表1”);
工作表.Cells.LoadFromDataTable(dataTable,true);
//创建分组

对于(var i=2;i我认为在Excel中实现这一点的唯一方法(暂时将ePlus放在一边)是在组之间创建一个间隙。在ePlus中,您可以执行以下操作:

[TestMethod]
public void Row_Multiple_Grouping_Test()
{
    //https://stackoverflow.com/questions/57925761/how-to-add-multiple-collapse-in-same-outline-using-epplus-c-sharp

    //Throw in some data
    var dataTable = new DataTable("tblData");
    dataTable.Columns.AddRange(new[]
    {
        new DataColumn("Header", typeof (string)),
        new DataColumn("Col1", typeof (int)),
        new DataColumn("Col2", typeof (int)),
        new DataColumn("Col3", typeof (object))
    });

    for (var i = 0; i < 10; i++)
    {
        var row = dataTable.NewRow();
        row[0] = $"Header {i}";
        row[1] = i; row[2] = i * 10;
        row[3] = Path.GetRandomFileName();
        dataTable.Rows.Add(row);
    }

    //Create a test file
    var fi = new FileInfo(@"c:\temp\Row_Multiple_Grouping_Test.xlsx");
    if (fi.Exists)
        fi.Delete();

    using (var pck = new ExcelPackage(fi))
    {
        var worksheet = pck.Workbook.Worksheets.Add("Sheet1");
        worksheet.Cells.LoadFromDataTable(dataTable, true);

        //Create the grouping
        for (var i = 2; i <= 11; i++)
        {
            worksheet.Row(i).OutlineLevel = 1;
            worksheet.Row(i).Collapsed = true;
        }

        //Create a gap - cant shrink or hide it because it hides the collapse button in GUI
        worksheet.InsertRow(7, 1);

        pck.Save();
    }
}
[TestMethod]
公共无效行\u多个\u分组\u测试()
{
//https://stackoverflow.com/questions/57925761/how-to-add-multiple-collapse-in-same-outline-using-epplus-c-sharp
//加入一些数据
var数据表=新数据表(“tblData”);
dataTable.Columns.AddRange(新[]
{
新数据列(“标题”,类型(字符串)),
新数据列(“Col1”,typeof(int)),
新数据列(“Col2”,typeof(int)),
新数据列(“Col3”,类型(对象))
});
对于(变量i=0;i<10;i++)
{
var row=dataTable.NewRow();
行[0]=“头{i}”;
第[1]=i行;第[2]=i*10行;
行[3]=Path.GetRandomFileName();
dataTable.Rows.Add(行);
}
//创建一个测试文件
var fi=新文件信息(@“c:\temp\Row\u Multiple\u Grouping\u Test.xlsx”);
如果(fi.存在)
fi.删除();
使用(var pck=新的ExcelPackage(fi))
{
var工作表=pck.工作簿.Worksheets.Add(“表1”);
工作表.Cells.LoadFromDataTable(dataTable,true);
//创建分组

对于(var i=2;i是否可以在单for循环中实现???@stefanedwinPrasanth当然。我将其拆分以使其更具可读性,但也可以在一个
for
中轻松实现。请参阅我的编辑。这是否可以在单for循环中实现???@stefanedwinPrasanth当然。我将其拆分以使其更具可读性,但也可以在一个
for .见我编辑。