c# - ClosedXml 不复制电子表格的打印机设置

标签 c# excel printing closedxml

我有 xltx Excel 的模板,当我从它创建(手动)新文档并单击 File->Print 在 Excel 中,第一个工作表适合一页。

然后我借助 ClosedXml 从我的模板创建新文档:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ClosedXML.Excel;

namespace ClosedXml1
{
    class Program
    {
        static void Main(string[] args)
        {
            var tXltx = "t.xltx";
            using (XLWorkbook workbook = new XLWorkbook(tXltx))
            {
                using (XLWorkbook newWb = new XLWorkbook())
                {
                    foreach (XLWorksheet worksheet in workbook.Worksheets.Reverse())
                    {
                        worksheet.CopyTo(newWb, worksheet.Name, 1);
                    }

                    newWb.SaveAs("new.xlsx");
                }
            }
        }
    }
}

当我打开生成的文档并打开打印对话框(文件->打印)时,第一张纸不适合一页。

UPDATE1: XLWorksheet::CopyTo 将页面设置从原始模板复制到生成的工作簿。因此,如果 xltx 模板具有页面设置 FitToPages(1,1),生成的文档将具有相同的页面设置。尽管如此,当我打开 ClosedXml 生成的工作表的打印预览时,它还是放不下一页。 所以,这是个问题:原始工作簿和生成的工作簿具有相同的页面设置,但生成的工作表不适合一页。


所以有问题:

  • 必须从生成的工作表的原始模板中复制什么 适合一页?
  • 有什么办法可以实现吗?

解决方法

Excel.Application excelApp = new Excel.Application();
Workbook original = excelApp.Workbooks.Open(originalFilename);
original.SaveAs(resultingFilename);                    
excelApp.Quit();
Marshal.FinalReleaseComObject(excelApp);

最佳答案

您可以检查/设置此选项

worksheet.PageSetup.PagesTall
worksheet.PageSetup.PagesWide
worksheet.PageSetup.FitToPages(1, 1)

(参见 Documentation 。)

关于c# - ClosedXml 不复制电子表格的打印机设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19851660/

相关文章:

python - 如何使用 openpyxl 普通工作簿查找列中的最后一行?

c# - 如何将 BitmapImage 图像转换为数据,以便我可以通过 Windows Phone 7 的 HTTP POST 请求将其上传到 Web?

c# - 如何将 ICommand 添加到 FrameworkElement 中的事件?

c# - 如何在使用 AsyncFileUpload 时在客户端获取服务器端重命名文件名

javascript - 如何使用 Excel javascript API 设置工作表的自定义设置?

javascript - Chrome : window. print() 打印对话框仅在页面重新加载后打开 (javascript)

c# - 从 C# 中的路径获取 basedir 和文件名

java - 将 Excel 时间戳转换为 java.sql.date

printing - 输入字符串并将其打印回来的程序将不起作用

r - 打印数据框,列居中对齐