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

2023-11-03

报表和单据打印,通常都是使用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;

丝滑。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spire.xls+excel文件实现单据打印 的相关文章

  • 如何自定义 DataTable 列的排序

    我需要对数据表列的值进行排序 该列包含字符串 整数或混合文本 例如 数据表列包含如下值 23 18 12 store 23 store a1 1283 25 如果我使用对值进行排序Dataview sort 方法会按此顺序产生 12 128
  • 处理 LINQ sum 表达式中的 null

    我正在使用 LINQ 查询来查找列的总和 并且在少数情况下该值有可能为空 我现在使用的查询是 int score dbContext domainmaps Where p gt p SchoolId schoolid Sum v gt v
  • Linq Where 本地计数器关闭在 VS watch 中的结果不同

    我尝试删除前 3 个元素array与 LinQWhere扩展功能 这是一个例子 var array new 1 2 3 4 5 6 7 8 9 var count 3 var deletedTest1 0 var test1 array W
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • 对数字进行向上和向下舍入 C++

    我试图让我的程序分别向上和向下舍入数字 例如 如果数字是3 6 我的程序应该四舍五入最接近的数字 4 如果该数字是3 4 它将向下舍入为 3 我尝试使用ceil库获取 3 个项目的平均值 results ceil marks1 marks2
  • 使用 VSTO 更改 Outlook 设置

    我刚刚花了大约 4 个小时试图弄清楚如何以编程方式检索 设置 Microsoft Outlook 2010 的 Outlook 设置 我所说的 设置 是指文件 选项 邮件下的设置 我想做的是检索用户设置的设置列表 自动化我们每天需要在某些消
  • 如何避免选择项目时 winforms 树视图图标发生变化

    我正在一个小型 C Winforms 应用程序中尝试树视图 我已经以编程方式将 ImageList 分配给树视图 并且所有节点都很好地显示了它们的图标 but当我单击一个节点时 它的图标会发生变化 变为 ImageList 中的第一个图像
  • C中有const吗?

    这个问题可能很幼稚 但是 有没有constC 中的关键字 从哪个版本开始 之间有任何语义和 或句法差异吗const在 C 和 C 中 C 和 C 之间在语法上没有差异const关键字 除了一个相当晦涩的关键字 在 C 中 自 C99 起 您
  • 根据拦截和返回值自动重试客户端WCF调用

    是否可以拦截 WCF 调用的结果并重试该操作 例如 操作的返回值可能包含状态代码 指示我传递到原始调用的会话令牌已过期 在这种情况下 我可以检索新的会话令牌并使用新的会话令牌重试调用 是否可以通过使用 WCF 拦截返回值 检查它 然后以对操
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • 捕获当前正在播放的声音

    是否可以捕获计算机上当前播放的声音 如果能够将其保存为 mp3 就好了 但我认为这样做会存在一些法律问题 所以 wav 也可以 我环顾四周 有人建议使用虚拟音频线之类的东西 在 C 中捕获声音输出 https stackoverflow c
  • 推送 Lua 表

    我已经创建了一个Lua表C 但我不知道如何将该表推入堆栈顶部 以便我可以将其传递给 Lua 函数 有谁知道如何做到这一点 这是我当前的代码 lua createtable state libraries size 0 int table i
  • 当格式字符串包含“{”时,String.Format 异常

    我正在使用 VSTS 2008 C Net 2 0 执行以下语句时 String Format 语句抛出 FormatException 有什么想法是错误的吗 这是获取我正在使用的 template html 的位置 我想在 templat
  • 在 C# 中赋值后如何保留有关对象的信息?

    我一直在问我的想法可能是解决方案 https stackoverflow com questions 35254467 is it possible in c sharp to get the attributes attached to
  • 如何在 C++ 中使用 PI 常数

    我想在一些 C 程序中使用 PI 常数和三角函数 我得到三角函数include
  • OpenMP C 程序运行速度比顺序代码慢

    我是 OpenMP 的新手 正在尝试并行化 Jarvis 的算法 然而事实证明 与顺序代码相比 并行程序花费的时间要长 2 3 倍 难道问题本身就不能并行化吗 或者我并行化它的方式有问题 这是我针对该问题的 openMP 程序 其中有 2
  • 便携式终端

    有没有办法根据所使用的操作系统自动使用正确的 EOL 字符 我在想类似的事情std eol 我知道使用预处理器指令非常容易 但很好奇它是否已经可用 我感兴趣的是 我的应用程序中通常有一些消息 稍后我会将这些消息组合成一个字符串 并且我希望将
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 局部静态变量初始化是线程安全的[重复]

    这个问题在这里已经有答案了 假设我有一个包含三个静态函数的类 如下所示 include
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode

随机推荐

  • java.lang.NullPointerException (no error message)问题解决

    问题描述 Android Studio项目同步时报错 java lang NullPointerException no error message 问题原因 有人说是 Android Gradle Plugin Version Gradl
  • java之暴力反射,执行私有方法

    废话少说 直接show code import java lang reflect InvocationTargetException import java lang reflect Method 暴力反射 public class Te
  • Unity3D 原生WebCamera实现摄像头显示

    Unity3D 原生WebCamera实现摄像头显示 今天小编为大家分享一下 如何通过WebCamera 调用外部的摄像头 1 首先我们需要简单认识一下 unity有关摄像头需要用到的内置类 WebCamDevice 官方文档 https
  • Rsync 12种故障排查及思路

    Rsync 故障排查整理 Rsync服务常见问题汇总讲解 1 客户端的错误现象 No route to host rsync服务端开启的iptables防火墙 root nfs01 tmp rsync avz etc hosts rsync
  • Mybatis-Plus eq、ne、gt、lt、ge、le分别代表含义

    Mybatis Plus eq ne gt lt ge le分别代表含义 eq 就是 equal等于 ne就是 not equal不等于 gt 就是 greater than大于 lt 就是 less than小于 ge 就是 greate
  • 关于burp suite安装无法抓包问题(火狐)

    刚进该领域的纯小白一个 按照网上的教程一步步都搞好了 包括CA证书 Java jdk1 8版本等 但是就是弄不好 代理调整好后访问百度网址显示 建立安全连接失败 一开始我以为他就该这样 但是发现burp suite无法抓包 按照提示先点击拦
  • Elasticsearch 基本使用(五)查询条件匹配方式(query & query_string)

    查询条件匹配方式 概述 query term terms range match all match match 匹配精度问题 match phrase match pharse prefix match bool prefix multi
  • 21天Jenkins打卡day8-配置SSH远程服务器

    参考文档 http istester com jenkins 427 html
  • 使用 ipmi实现Linux系统下对服务器的管理

    IPMI Intelligent Platform Management Interface 即智能平台管理接口是使硬件管理具备 智能化 的新一代通用接口标准 用户可以利用 IPMI 监视服务器的物理特征 如温度 电压 电扇工作状态 电源供
  • 【Linux网络】网络编程套接字(上)

    Linux 博客主页 一起去看日落吗 分享博主的在Linux中学习到的知识和遇到的问题 博主的能力有限 出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话 看似不起波澜的日复一日 一定会在某一天让你看见坚持的意义 祝我们都能在鸡零狗碎里找
  • ospf协议_三级网络技术考前选择题3—OSPF协议

    一 视频讲解 二 知识点背诵 高频21次 1 OSPF是内部网关协议的一种 采用最短路径算法 使用分布式链路状态协议 2 对于规模很大的网络 OSPF通过划分区域来提高路由更新收敛速度 每个区域有一个32位的区域标识符 区域内路由器不超过2
  • Springboot+Shiro+Jwt实现简单的权限控制

    前置背景 为什么写下这篇文章 因为需要实现一个设备管理系统的权限管理模块 在查阅很多博客以及其他网上资料之后 发现重复 无用的博客很多 因此写一篇文章来记录 以便后面复习 涉及的知识点主要有下列知识点 JWT shiro 书写顺序 首先使用
  • 本地写json数据并在页面中调用

    这里我自己写的是两个方法 一种是用js文件中写的 一种是在json文件中写的 js文件 var workData firstWork companyName time department position project name tim
  • 好文

    https www jianshu com p c2ec5f06cf1a
  • 带隙基准电流源设计与改进/自己备忘

    采用1830工艺设计 预设值电流I 10uA 由公式 过驱动电压0 2V 得到PMOS宽长比12 5 1 由公式 过驱动电压0 2V 得到NM8宽长比2 8 1 设置K 4 NM7宽长比4 2 8 1 由公式 带入计算得到R大小为9 96K
  • [1197]脱壳工具dumpDex的使用详解

    文章目录 一 dumpDex概述 二 使用方法 三 脱壳原理 一 dumpDex概述 dumpDex 一个开源的 Android 脱壳插件工具 需要xposed支持 可以用来脱掉当前市场上大部分的壳 360加固 腾讯乐固 梆梆加固 百度加固
  • Googletest 实现简要分析

    借助于 Googletest 测试框架 我们只需编写测试用例代码 并定义简单的 main 函数 编译之后并运行即可以把我们的测试用例跑起来 更详细的内容可参考 Googletest 入门 但 main 函数调用 RUN ALL TESTS
  • MySQL学习1:前期准备

    一 数据库基础知识 1 为什么使用数据库 持久化 数据库是一种持久化介质 即可以将内存数据永久的保存在磁盘上 数据库特性 支持多种数据的复杂性 寻找数据比较容易 2 数据库的一些基本概念 DB 数据库 本质是一个文件系统 能够保存有组织的数
  • 百度 Hydra 工具在移动端 UI 兼容性测试上的高效应用

    导读 尽管自动化测试技术日新月异 但是自动化case构建成本 执行稳定性等问题的存在 使手工测试依然移动端质量保证的重要手段 传统手工测试必须通过人工操作的方式执行测试用例 效率提升依赖测试人员的操作熟练度 本文从介绍百度内UI兼容性测试现
  • Spire.xls+excel文件实现单据打印

    报表和单据打印 通常都是使用fastreport之类的 因为有了现成的xls模板样式 如果转成fastreport那还需要花时间 是用spire xls这个玩意简单 超好用 一 引用 using Spire Xls 二 基本的操作 创建工作