如何使用C#结合Excel interop实现Excel工作表横向旋转?
你之前尝试的转置操作是对单元格行列内容进行互换,和你需要的「工作表横向旋转」需求不匹配。以下两种方案可以直接调整页面布局为横向,完整保留原有单元格列宽、内容和绑定的图片:

方案1:使用GemBox组件实现(推荐,操作更简便)
- 加载已生成的Excel文件
ExcelFile excelFile = ExcelFile.Load("目标文件路径.xlsx"); var targetWorksheet = excelFile.Worksheets[0];
- 调整页面设置为横向,同时配置图片绑定规则
// 设置页面方向为横向 targetWorksheet.PrintOptions.Orientation = PageOrientation.Landscape; // 可选配置:设置所有列自适应1页宽度,彻底避免内容溢出 targetWorksheet.PrintOptions.FitWorksheetWidthToPages = 1; // 锁定图片和单元格的关联,避免布局调整后图片偏移 foreach (var picture in targetWorksheet.Pictures) { picture.Position.MoveWithCells = true; picture.Position.SizeWithCells = true; }
- 直接保存文件即可,原有内容、图片完全不会被改动。
方案2:使用Excel Interop API实现
- 激活目标工作表后调整页面属性
Worksheet targetWorksheet = (Worksheet)workbook.Worksheets[1]; // 设置页面为横向 targetWorksheet.PageSetup.Orientation = XlPageOrientation.xlLandscape; // 可选配置:适配1页宽度 targetWorksheet.PageSetup.Zoom = false; targetWorksheet.PageSetup.FitToPagesWide = 1; targetWorksheet.PageSetup.FitToPagesTall = false; // 绑定图片跟随单元格移动缩放 foreach (Shape shape in targetWorksheet.Shapes) { if (shape.Type == MsoShapeType.msoPicture) { shape.Placement = XlPlacement.xlMoveAndSize; } }
- 保存工作簿即可生效。
内容的提问来源于stack exchange,提问作者prasanna
相关产品推荐
相关产品推荐

