gpt4 book ai didi

excel-2007 - 如何通过 OpenXML sdk 将 excel 2007 文档方向更改为横向

转载 作者:行者123 更新时间:2023-12-02 17:54:53 24 4
gpt4 key购买 nike

我需要帮助将 Excel 2007 文档方向更改为横向。我没有找到任何关于此的有用信息。我为此使用 OpenXML SDK。我唯一发现的是:当我创建一个新的工作表时,我应该设置 PageSetup() { Orientation = OrientationValue.Landscape};但这没有帮助。有人可以帮助解决这个问题吗?谢谢。

最佳答案

您的 OrientationValue.Landscape 走在正确的轨道上。您只需循环遍历所有工作表并在 PageSetup 元素上设置方向属性即可将所有工作表设置为横向:

    public static void SetLandscape(SpreadsheetDocument document)
{
WorkbookPart workbookPart = document.WorkbookPart;
IEnumerable<string> worksheetIds = workbookPart.Workbook.Descendants<Sheet>().Select(w => w.Id.Value);
WorksheetPart worksheetPart;
foreach (string worksheetId in worksheetIds)
{
worksheetPart = ((WorksheetPart)workbookPart.GetPartById(worksheetId));
PageSetup pageSetup = worksheetPart.Worksheet.Descendants<PageSetup>().FirstOrDefault();
if (pageSetup != null)
{
pageSetup.Orientation = OrientationValues.Landscape;
}
worksheetPart.Worksheet.Save();
}
workbookPart.Workbook.Save();
}

我用来操作文档的模式是首先打开 Excel 并创建一个空白文档并保存它。然后,我使用我的代码打开该文档并执行我需要的任何工作。这样我就不必费心创建元素并确保事物位于正确的位置。我用来实现此目的的代码在这里:

public byte[] Export(string pathToExcelFile)
{
// Open the file from the drive
byte[] byteArray = File.ReadAllBytes(pathToExcelFile)
using (MemoryStream stream = new MemoryStream())
{
stream.Write(byteArray, 0, (int)byteArray.Length);
using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Open(stream, true))
{
// Do all work on excel doc here
SetLandscape(spreadsheetDoc);

// Save all the changes
}

return stream.ToArray();
}
}

因此,我在这里将文件从驱动器打开到内存流中,以便可以在内存中执行所有编辑。然后,我在 SetLandscape 方法中传递该文档,它将在所有三张纸(3 张纸,因为这是空白 excel 2007 文档的默认值)上设置横向属性。然后,我保存更改并将流作为字节数组返回。我这样做是为了可以下载该文件。我建议您创建一个空白文件并将其打开到内存中,如下所示,而不是手动尝试从头开始构建该文件。这可以解释为什么你会得到这么多空指针。

关于excel-2007 - 如何通过 OpenXML sdk 将 excel 2007 文档方向更改为横向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3237494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com