为有中文需求的客户提供多渠道中文技术支持.

Sat Apr 15, 2023 9:42 am

Spire.XLS for .NET ,c#中第一次执行 Spire.Xls.Workbook workbook = new Spire.Xls.Workbook(); 需要2秒左右。另外每次执行
workbook.PrintDocument.PrinterSettings.Copies = 打印次数; 或者 workbook.PrintDocument.PrinterSettings.PrinterName = “打印机名称”; 也要1秒多的时间,都比较慢是什么原因呢?

biaokey123
 
Posts: 2
Joined: Sat Apr 15, 2023 1:45 am

Mon Apr 17, 2023 6:00 am

您好,

感谢咨询。
代码运行速度通常和项目框架、系统环境也有关系。我用下面的代码在我这边测试了一下,三个方法花费的时间都很短,分别为888ms,131ms,0.07ms。如果您的花费时间远超我的测试结果,请您提供您的项目框架(如:Net6.0),系统环境(如:Windows 10,RAM:16G)供我们这边详细调查下,感谢协助!

Code: Select all
    DateTime start1 = DateTime.Now;
    Workbook wb = new Workbook();
    DateTime end1 = DateTime.Now;
    TimeSpan tspan1 = end1- start1;
    System.Diagnostics.Debug.WriteLine("new Workbook: "+tspan1.TotalMilliseconds.ToString());
    DateTime start2 = DateTime.Now;
    wb.PrintDocument.PrinterSettings.Copies = 5;
    DateTime end2 = DateTime.Now;
    TimeSpan tspan2 = end2 - start2;
    System.Diagnostics.Debug.WriteLine("Copies: " +tspan2.TotalMilliseconds.ToString());
    DateTime start3 = DateTime.Now;
    wb.PrintDocument.PrinterSettings.PrinterName = "Microsoft XPS Document Writer";
    DateTime end3 = DateTime.Now;
    TimeSpan tspan3 = end3 - start3;
    System.Diagnostics.Debug.WriteLine("PrinterName: " + tspan3.TotalMilliseconds.ToString());


Sincerely,
Doris
E-iceblue support team
User avatar

Doris.Liu
 
Posts: 460
Joined: Mon Nov 07, 2022 8:10 am

Tue Apr 18, 2023 5:14 am

Doris.Liu wrote:您好,

感谢咨询。
代码运行速度通常和项目框架、系统环境也有关系。我用下面的代码在我这边测试了一下,三个方法花费的时间都很短,分别为888ms,131ms,0.07ms。如果您的花费时间远超我的测试结果,请您提供您的项目框架(如:Net6.0),系统环境(如:Windows 10,RAM:16G)供我们这边详细调查下,感谢协助!

Code: Select all
    DateTime start1 = DateTime.Now;
    Workbook wb = new Workbook();
    DateTime end1 = DateTime.Now;
    TimeSpan tspan1 = end1- start1;
    System.Diagnostics.Debug.WriteLine("new Workbook: "+tspan1.TotalMilliseconds.ToString());
    DateTime start2 = DateTime.Now;
    wb.PrintDocument.PrinterSettings.Copies = 5;
    DateTime end2 = DateTime.Now;
    TimeSpan tspan2 = end2 - start2;
    System.Diagnostics.Debug.WriteLine("Copies: " +tspan2.TotalMilliseconds.ToString());
    DateTime start3 = DateTime.Now;
    wb.PrintDocument.PrinterSettings.PrinterName = "Microsoft XPS Document Writer";
    DateTime end3 = DateTime.Now;
    TimeSpan tspan3 = end3 - start3;
    System.Diagnostics.Debug.WriteLine("PrinterName: " + tspan3.TotalMilliseconds.ToString());


Sincerely,
Doris
E-iceblue support team



我这边的系统运行环境是:

Windows 11,RAM:16G

Microsoft Visual Studio Community 2022
版本 17.5.3
VisualStudio.17.Release/17.5.3+33516.290
Microsoft .NET Framework
版本 4.8.04161

现在发现Spire.XLS在第一次执行excel打印的时候非常慢,workbook.PrintDocument.Print(); 执行要花近10s,第二次执行就快很多,只要2s左右。
代码如下:

Spire.Xls.Workbook workbook = new Spire.Xls.Workbook();
FileStream filest = new FileStream(filep, FileMode.Open);
workbook.LoadFromStream(filest);

var printerSettings = new PrinterSettings
{
PrinterName = printer,
Copies = 5,
// Duplex = Duplex.Vertical 双面打印开关
};
System.Drawing.Printing.PaperSize paper = new System.Drawing.Printing.PaperSize("Custom", (int)(60 / 25.4f * 100f), (int)(30 / 25.4f * 100f));
paper.RawKind = (int)PaperKind.Custom;
// Create our page settings for the paper size selected
var pageSettings = new PageSettings(printerSettings)
{
Margins = new Margins(0, 0, 0, 0),
PaperSize = paper,
};
workbook.PrintDocument.PrinterSettings = printerSettings;
workbook.PrintDocument.DefaultPageSettings = pageSettings;
//workbook.PrintDocument.PrintController = new StandardPrintController();

Console.WriteLine("开始执行" + ":" + DateTime.Now.ToString("h:mm:ss.fff"));
workbook.PrintDocument.Print();
Console.WriteLine("结束执行" + ":" + DateTime.Now.ToString("h:mm:ss.fff"));
}));

biaokey123
 
Posts: 2
Joined: Sat Apr 15, 2023 1:45 am

Tue Apr 18, 2023 8:52 am

您好,

这个方法的执行时间和文件大小以及打印机本身也有关系。至于第一次打印10s,之后打印2s,这个可能和打印缓存有关系。您可以提供下文件,我们这边测试一下。感谢您的配合。

Sincerely,
Doris
E-iceblue support team
User avatar

Doris.Liu
 
Posts: 460
Joined: Mon Nov 07, 2022 8:10 am

Return to 中文技术支持