Spire.xls+excel文件实现单据打印

news/2024/11/17 23:54:25/

报表和单据打印,通常都是使用fastreport之类的,因为有了现成的xls模板样式,如果转成fastreport那还需要花时间,是用spire.xls这个玩意简单,超好用。

一.引用
using Spire.Xls;

二.基本的操作
// 创建工作簿,读写,保存,保存
        private void save_Click(object sender, EventArgs e)
        {
            Workbook workbook = new Workbook();
            workbook.LoadFromFile(Application.StartupPath + "\\sample.xlsx");
            // 获取第一个工作表
            Worksheet sheet = workbook.Worksheets[0];
            // 读取数据
            string value1 = sheet.Range["A1"].Value.ToString();
            string value2 = sheet.Range["B1"].Value.ToString();
            // 写入数据
            sheet.Range["A1"].Value = "Hello";  //方式一
            sheet.Range[2,2].Value = "World";   //方式二
            //保存文件
            workbook.SaveToFile("c:\\example.xlsx", ExcelVersion.Version2013);

        }
三.打印
使用对话框模式输出,不知道原因是什么,怎么选择打印机都是从默认打印机输出。
                myxls.LoadFromFile(Application.StartupPath + "\\sample.xlsx");
                sheet = myxls.Worksheets[0];
                sheet.PageSetup.PrintArea = "A1:H20";
                PrintDialog dialog = new PrintDialog();
                dialog.PrinterSettings.PrintRange = System.Drawing.Printing.PrintRange.SomePages;
                dialog.PrinterSettings.FromPage = 0;
                dialog.AllowPrintToFile = true;
                dialog.AllowCurrentPage = true;
                dialog.AllowSomePages = true;
                myxls.PrintDialog = dialog;
                myxls.PrintDocument.PrinterSettings.Copies = 1;
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    myxls.PrintDocument.Print();
                }

找不出原因,归结为可能是免费版本限制功能的原因。也不深究,换一个方式,在页面上增加了一个下拉框,窗体加载时将打印机列出来供选择。
      using System.Drawing.Printing;
       foreach (var item in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
                {
                this.con_printer.Items.Add(item);
                }
            this.con_printer.Text= new System.Drawing.Printing.PrintDocument().PrinterSettings.PrinterName;//默认打印机

调用打印的时候,直接指定打印机名称,曲线救国成功。
                myxls.PrintDocument.PrintController = new StandardPrintController();
                PrinterSettings settings = myxls.PrintDocument.PrinterSettings;
                settings.PrinterName = this.con_printer.Text;
                settings.Duplex = Duplex.Simplex;
                settings.FromPage = 1;
                settings.ToPage = 1;
                myxls.PrintDocument.Print();

四.插入图片
需要在打印页面插入二维码, 这个先用zxing产生图片,在指定位置插入图片
                ExcelPicture mypic = sheet.Pictures.Add(1, 12, Generate3(barcode, 300, 300)); //在第1行12列插入
                mypic.Width = 90;
                mypic.Height = 90;
                mypic.LeftColumnOffset = 75;
                mypic.TopRowOffset = 20;

丝滑。
 


http://www.ppmy.cn/news/1096637.html

相关文章

JavaScript中的原型链(prototype chain)

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript中的原型链⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏…

算法刷题记录-树(LeetCode)

783. Minimum Distance Between BST Nodes 思路(DFS 中序遍历) 考虑中序遍历的性质即可 代码 class Solution { public:int min_diffnumeric_limits<int>::max();int prevnumeric_limits<int>::min()100000;int minDiffInBST(TreeNode* root) {inorderTraversa…

【创新项目探索】大数据服务omnidata-hive-connector介绍

omnidata-hive-connector介绍 omnidata-hive-connector是一种将大数据组件Hive的算子下推到存储节点上的服务&#xff0c;从而实现近数据计算&#xff0c;减少网络带宽&#xff0c;提升Hive的查询性能。目前支持Hive on Tez。omnidata-hive-connector已在openEuler社区开源。 …

PY32F003F18串口函数

一、 PY32F003F18串口HAL库函数 HAL库函数本身写得很好&#xff0c;但非常难以理解。 1、PY32F003F18串口配置函数UART_SetConfig(UART_HandleTypeDef *huart) //函数功能:将UART_HandleTypeDef型结构变量写入"串口控制寄存器" static void UART_SetConfig(UART_H…

Linux学习之基础工具一

1.Linux 软件包管理器 yum 首先我们需要知道的是在Linux下&#xff0c;现存的软件和指令是一定的&#xff0c;而有的时候我们想需要更多的指令或者软件&#xff0c;而这在Linux本身下是没有的&#xff0c;故我们可以利用指令yum指令安装或卸载你想要或者不需要的软件&#xff…

gitlab 合并分支

打开我们的gitlab&#xff0c;找到我们的项目&#xff0c;在左侧菜单中找到Merge requests&#xff0c;点击Merge requests&#xff0c;进入下一个页面 点击New merge requests&#xff0c;创建一个新的merge&#xff0c;进入下一个页面 选择自己分支和目标分支&#xff0c;自己…

Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

ABY2.0:更低的通信开销

参考文献&#xff1a; [ABY] Demmler D, Schneider T, Zohner M. ABY-A framework for efficient mixed-protocol secure two-party computation[C]//NDSS. 2015.[ABY3] Mohassel P, Rindal P. ABY3: A mixed protocol framework for machine learning[C]//Proceedings of the…