Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# 使用openxml在excel中合并相邻单元格_C#_Asp.net_Openxml - Fatal编程技术网

C# 使用openxml在excel中合并相邻单元格

C# 使用openxml在excel中合并相邻单元格,c#,asp.net,openxml,C#,Asp.net,Openxml,我想用openxml在excel中合并五个相邻的单元格。我试图通过添加一个单元格来修改下面的代码段,但它不起作用。它只对两个单元格起作用。如果我想合并两个以上的单元格,该怎么办 // Given a document name, a worksheet name, and the names of two adjacent cells, merges the two cells. // When two cells are merged, only the content from on

我想用openxml在excel中合并五个相邻的单元格。我试图通过添加一个单元格来修改下面的代码段,但它不起作用。它只对两个单元格起作用。如果我想合并两个以上的单元格,该怎么办

// Given a document name, a worksheet name, and the names of two adjacent cells, merges the two cells.
    // When two cells are merged, only the content from one cell is preserved:
    // the upper-left cell for left-to-right languages or the upper-right cell for right-to-left languages.
    private static void MergeTwoCells(Worksheet worksheet, string cell1Name, string cell2Name)
    {
        // Open the document for editing.
        // Verify if the specified cells exist, and if they do not exist, create them.
        //CreateSpreadsheetCellIfNotExist(worksheet, cell1Name);
        //CreateSpreadsheetCellIfNotExist(worksheet, cell2Name);

            MergeCells mergeCells;
            if (worksheet.Elements<MergeCells>().Count() > 0)
            {
                mergeCells = worksheet.Elements<MergeCells>().First();
            }
            else
            {
                mergeCells = new MergeCells();

                // Insert a MergeCells object into the specified position.
                if (worksheet.Elements<CustomSheetView>().Count() > 0)
                {
                    worksheet.InsertAfter(mergeCells, worksheet.Elements<CustomSheetView>().First());
                }
                else if (worksheet.Elements<DataConsolidate>().Count() > 0)
                {
                    worksheet.InsertAfter(mergeCells, worksheet.Elements<DataConsolidate>().First());
                }
                else if (worksheet.Elements<SortState>().Count() > 0)
                {
                    worksheet.InsertAfter(mergeCells, worksheet.Elements<SortState>().First());
                }
                else if (worksheet.Elements<AutoFilter>().Count() > 0)
                {
                    worksheet.InsertAfter(mergeCells, worksheet.Elements<AutoFilter>().First());
                }
                else if (worksheet.Elements<Scenarios>().Count() > 0)
                {
                    worksheet.InsertAfter(mergeCells, worksheet.Elements<Scenarios>().First());
                }
                else if (worksheet.Elements<ProtectedRanges>().Count() > 0)
                {
                    worksheet.InsertAfter(mergeCells, worksheet.Elements<ProtectedRanges>().First());
                }
                else if (worksheet.Elements<SheetProtection>().Count() > 0)
                {
                    worksheet.InsertAfter(mergeCells, worksheet.Elements<SheetProtection>().First());
                }
                else if (worksheet.Elements<SheetCalculationProperties>().Count() > 0)
                {
                    worksheet.InsertAfter(mergeCells, worksheet.Elements<SheetCalculationProperties>().First());
                }
                else
                {
                    worksheet.InsertAfter(mergeCells, worksheet.Elements<SheetData>().First());
                }
            }

            // Create the merged cell and append it to the MergeCells collection.

            string s1 = cell1Name + ":" + cell2Name ;
            MergeCell mergeCell = new MergeCell() { Reference = s1 };
            mergeCells.Append(mergeCell);

            worksheet.Save();

    }
//给定文档名、工作表名和两个相邻单元格的名称,合并两个单元格。
//合并两个单元格时,仅保留一个单元格中的内容:
//左上角单元格表示从左到右的语言,右上角单元格表示从右到左的语言。
私有静态void MergeTwoCells(工作表工作表,字符串cell1Name,字符串cell2Name)
{
//打开文档进行编辑。
//验证指定的单元格是否存在,如果不存在,请创建它们。
//创建电子表格CellIfNotExist(工作表,cell1Name);
//创建电子表格Cellifnotexist(工作表,cell2Name);
合并细胞合并细胞;
如果(工作表.Elements().Count()>0)
{
mergeCells=工作表.Elements().First();
}
其他的
{
mergeCells=新的mergeCells();
//将MergeCells对象插入指定位置。
如果(工作表.Elements().Count()>0)
{
worksheet.InsertAfter(合并单元格,worksheet.Elements().First());
}
else if(工作表.Elements().Count()>0)
{
worksheet.InsertAfter(合并单元格,worksheet.Elements().First());
}
else if(工作表.Elements().Count()>0)
{
worksheet.InsertAfter(合并单元格,worksheet.Elements().First());
}
else if(工作表.Elements().Count()>0)
{
worksheet.InsertAfter(合并单元格,worksheet.Elements().First());
}
else if(工作表.Elements().Count()>0)
{
worksheet.InsertAfter(合并单元格,worksheet.Elements().First());
}
else if(工作表.Elements().Count()>0)
{
worksheet.InsertAfter(合并单元格,worksheet.Elements().First());
}
else if(工作表.Elements().Count()>0)
{
worksheet.InsertAfter(合并单元格,worksheet.Elements().First());
}
else if(工作表.Elements().Count()>0)
{
worksheet.InsertAfter(合并单元格,worksheet.Elements().First());
}
其他的
{
worksheet.InsertAfter(合并单元格,worksheet.Elements().First());
}
}
//创建合并单元格并将其附加到MergeCells集合。
字符串s1=cell1Name+“:”+cell2Name;
MergeCell MergeCell=new MergeCell(){Reference=s1};
mergeCells.Append(mergeCell);
工作表。保存();
}

您不需要更改代码。如果要合并多个单元格,只需确保cell1Name是要合并单元格的左上角单元格cell2Name右下角单元格(即A1:B2将合并单元格A1、A2、B1和B2)

此外,仅保留左上角单元格中的值(或右上角用于从右到左的文本)。

代码按原样工作。你怎么称呼它?