C#编辑、打印Excel文件不依赖Office
1.不废话、不用vip、不吸粉,只为单纯的传播技术。
2.开发环境:VS2019.
3.点击项目-->管理NuGet程序包.搜索框输入Spire.XLS,点击Payway.Spire点击安装,点击同意,安装成功.(该步骤已弃用,往下翻,看最新更新方法)
4.然后你就会在你的解决方案的引用下看见这个:
5.这三段代码必须要:
Spire.Xls.Workbook workbook = new Spire.Xls.Workbook();
workbook.LoadFromFile(@"D:\Documents\test1.xlsx");
Spire.Xls.Worksheet sheet = workbook.Worksheets[0];//根据你自己要修改的文件来.
6.插入空白行,然后复制你想要的单元格格式:
sheet.InsertRow(fillDataStartRow);//插入空白行
sheet.Range["A1"].Style = sheet.Range["B1"].Style;//复制单元格格式,这里表示把单元格A1的格式复制给A2.这样就不用我们自己去定义格式了,因为很多时候自己需要,Excel模板已经做好了,你只需要从后台把数据拿到,然后填充到Excel中即可.所以一般表格需要空一行作为格式的复制对象.如下图:
7. 填充数据:
sheet.Range["A1"].Value2 = dataTable.Rows[i][j];//dataTable是自己造的数据,这句代码就是向单元格A1填充数据.
8.最后别忘了保存文档,将内存中的数据写入到文件.
workbook.SaveToFile(@"D:\Documents\test12.xlsx");
9.加载刚刚生成的文档,再打印.
Workbook workbook = new Workbook();
workbook.LoadFromFile(fileName);
//获取第一个Excel工作表
Worksheet sheet = workbook.Worksheets[0];
//设置打印纸张大小
sheet.PageSetup.PaperSize = PaperSizeType.PaperA4;
//设置打印方向(这是设置纸张的方向为横向)
sheet.PageSetup.Orientation = PageOrientationType.Landscape;
//设置打印对话框属性
PrintDialog dialog = new PrintDialog();
dialog.AllowPrintToFile = true;
dialog.AllowCurrentPage = true;
dialog.AllowSomePages = true;
//设置单面打印
dialog.PrinterSettings.Duplex = Duplex.Simplex;
//设置打印份数
dialog.PrinterSettings.Copies = 1;
//打印文档
workbook.PrintDialog = dialog;
PrintDocument pd = workbook.PrintDocument;
//这是设置打印文档的方向为横向(若为纵向打印则两步都需要改)
pd.DefaultPageSettings.Landscape = true;
PrintController printController = new StandardPrintController();
pd.PrintController = printController;
pd.Print();
10.至此,横向打印,不限纸张,不需要安装Office的打印完美解决.某些个看个技术文章还要vip的真的想吐.我始终认为技术的交流应该少些障碍.特别是人为的.现在一堆乱七八糟的下载真T么恶心.不用破解照样解决问题.
自己看看这PT,成啥样了:
无语至极...
2022-10-24更新:
现在可直接使用最新版(滑稽):
直接搜索Spire.XLS。如下图:
测试了一下,没有评估字样了。一般需求,免费版足矣,更多企业级需求还请联系官方购买正版。
测试代码,很少,拷过去改下xlsx文件路径就能打印成功。
using Spire.Xls;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Workbook workbook = new Workbook();
workbook.LoadFromFile(@"D:\test1.xlsx");
//获取第一个Excel工作表
Worksheet sheet = workbook.Worksheets[0];
//设置打印纸张大小
sheet.PageSetup.PaperSize = PaperSizeType.PaperA4;
//设置打印方向(这是设置纸张的方向为横向)
sheet.PageSetup.Orientation = PageOrientationType.Landscape;
//设置打印对话框属性
PrintDialog dialog = new PrintDialog();
dialog.AllowPrintToFile = true;
dialog.AllowCurrentPage = true;
dialog.AllowSomePages = true;
//设置单面打印
dialog.PrinterSettings.Duplex = Duplex.Simplex;
//设置打印份数
dialog.PrinterSettings.Copies = 1;
//打印文档
workbook.PrintDialog = dialog;
PrintDocument pd = workbook.PrintDocument;
//这是设置打印文档的方向为横向(若为纵向打印则两步都需要改)
pd.DefaultPageSettings.Landscape = true;
PrintController printController = new StandardPrintController();
pd.PrintController = printController;
pd.Print();
}
}
}
原文件:
打印出来的文件:
完结,撒花!
C#编辑、打印Excel文件不依赖Office相关推荐
- 按文件名数值排序批量打印Excel文件
起因 同事求助,工作中经常有一大批Excel表单需要打印,并且打印出来表单是有顺序要求,文件名已经排好了顺序,打印也要按这个顺序打.问我有没有什么快捷的办法. 初次尝试 刚开始没仔细想这个问题 ...
- Java打印Excel文件 Jacob打印Excel文件
Java 利用jacob打印Excel文件 一.不指定打印机 直接利用默认的打印机进行打印.测试通过,环境:Win7+jdk1.7.0_79+jacob-1.14.3-x64 /*** 打印Excel ...
- C#在线打开编辑保存Excel文件[pageoffice]
在项目开发过程中,经常会涉及到生成Excel报表,但往往系统只能通过后台生成Excel报表并保存到服务器上,若想在系统中打开Excel文件并进行编辑保存,有些人可能就没有思路了.因此,为了实现Exce ...
- python打印Excel文件方法
'''打印方式一''' 使用系统打印接口 # import os # file= '文件' # os.startfile(file,'print') '''打印方式二''' 使用第三方软件包 xl ...
- vue中用xlsx、xlsx-style、file-saver插件实现用表格原始数据打印excel文件
打印出的excel文件如下: 1.需要安装插件(xlsx插件使用后已经有换行功能,如果对导出的excel文件没有样式要求就不用下载xlsx-style插件) npm i -S xlsx npm i ...
- Excel文件打开后不能编辑,可以这样处理
打开Excel文件,却发现数据无法修改,其实是编辑的Excel文件受到了限制. 设置了工作表保护,还体现在不能负责粘贴Excel文件内容,不能打印Excel文件等. 平时除了我们给自己的Excel文件 ...
- excel文件不能编辑怎么回事?
excel文件打开的时候没有要求输入密码,但是却不能编辑excel文件是怎么回事? excel文件打开的时候没有提示输入密码,这只能证明文件并没有设置打开密码,并不能证明excel文件没有被加密,因为 ...
- Excel文件的编辑限制密码,如何撤销?
遇到了很重要的excel文件,对文件进行加密是一个有效的保护方法.如果有些表格可以让他人查看,但是担心他人对表格进行操作,我们可以使用excel中的保护工作表的功能对表格进行加密.和大家分享如何对ex ...
- 如何删除写保护的文件_如何找回已删除或永久删除的Office Excel文件
恢复删除Excel文件概述 Microsoft Office Excel是微软(Microsoft)为Windows及macOS所设计的试算表软件.它的计算.绘图工具.枢纽分析表和一个称作VBA(Vi ...
最新文章
- mysql报错 Incorrect table definition;there can be only one auto column and it must be defined as a key
- 好大一盘棋:谷歌光纤再下一城
- JAVA是如何传递参数的?是传值(by value)?还是传地址(by reference)?
- 面试时经常问到的系统应用优化问题总结
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 19丨最后一个能进入电梯的人【难度中等】​
- 11选5下期算法_双色球 133期预测 132中奖5+1
- 通货膨胀时是否提前还本付息--郎咸平
- 引导linux的工具下载,多系统引导工具(BootThink)下载_多系统引导工具(BootThink)官方下载-太平洋下载中心...
- 你能理解、不能理解和不需要理解的量子计算
- Kafka-partition
- 叶子的离开,是因为风的追求,还是树的不挽留
- echarts改变颜色属性的demo
- Spring源码之FactoryBean接口的作用和实现原理
- AJAX培训第一讲:AJAX基础
- 易车网靠谱吗,蛋蛋告诉你
- DSI3协议理论基础讲解
- uniapp如何使用uview中的loadmore上拉加载
- linux下查看硬盘型号、大小等信息
- 用Python爬取微信好友,原来他们是这样的人......
- python复利计算_python:复利计算
热门文章
- FTP服务器和NFS服务器
- C++中const关键字用法详解及实例和源码下载(一)
- ❤️导图整理数组4: 三数之和 相比于 两数之和 的难点, 力扣15❤️
- Perl CGI简介
- DCB工作机制解析二(ETS,DCBX)
- EAS BOS 报表开发
- python爬虫爬取豆瓣top排行图片
- EcmaScript 6 - 块级作用域(block scope)
- MyEclipse如何复制项目、无法修改web-context-root问题解决办法/ Repeated column in mapping for entity
- 【git】基本命令和本地操作