C# ClosedXml不';t复制电子表格';s打印机设置
我有xltx Excel的模板,当我从它创建(手动)新文档并单击Excel中的C# ClosedXml不';t复制电子表格';s打印机设置,c#,excel,printing,closedxml,C#,Excel,Printing,Closedxml,我有xltx Excel的模板,当我从它创建(手动)新文档并单击Excel中的文件->打印时,第一张工作表适合一页 然后,我在ClosedXml的帮助下从模板创建新文档: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ClosedXML.Excel; namespace ClosedXml1 { class Program {
文件
->打印
时,第一张工作表适合一页
然后,我在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");
}
}
}
}
}
当我打开生成的文档并打开打印对话框(文件
->打印
)时,第一页不适合一页
更新1:xlsheet::CopyTo
将页面设置从原始模板复制到生成的工作簿。因此,如果xltx模板具有页面设置FitToPages(1,1)
,则生成的文档将具有相同的页面设置。尽管如此,当我打开ClosedXml生成的页面的打印预览时,它不适合一页所以,这是一个问题:原始工作簿和生成的工作簿具有相同的页面设置,但生成的工作表不适合一页。
所以有一些问题:
- 从生成的工作表的原始模板复制什么 合一页李>
- 有没有办法做到这一点
解决方法
您可以使用检查/设置此选项
worksheet.PageSetup.PagesTall
worksheet.PageSetup.PagesWide
worksheet.PageSetup.FitToPages(1, 1)
(请参阅。)是,ClosedXml在执行CopyTo时将丢失这些设置。一种特殊情况是,当PagesTall设置为空时,它必须在工作表副本上显式设置为-1,否则ClosedXml会将其设置为1,这似乎是特定模板的问题。
worksheet.PageSetup.PagesTall
worksheet.PageSetup.PagesWide
worksheet.PageSetup.FitToPages(1, 1)