c# – 使用openxml合并excel中的相邻单元格
发布时间:2020-12-16 02:02:58 所属栏目:百科 来源:网络整理
导读:我想使用openxml在excel中合并五个相邻的单元格.我试图通过添加一个单元格来对下面的代码片段进行修改,但它不起作用.它只适用于两个单元格.如果我想合并多个细胞,我该怎么办? // Given a document name,a worksheet name,and the names of two adjacent cel
我想使用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(); } 解决方法
您无需更改代码.如果要合并多个单元格,只需确保cell1Name是要合并的单元格的左上角单元格,而cell2Name是右下角的单元格(即A1:B2将合并单元格A1,A2,B1和B2) .
此外,仅保留左上角单元格中的值(或从右到左文本的右上角). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |