JS调用打印机打印excel表格,poi对excel进行读写

本文介绍了一种方法,通过JavaScript调用打印机打印Excel表格,首先利用Java的POI库将Excel转换为HTML,然后在前端打印这个HTML页面,最后展示了实施效果。
摘要由CSDN通过智能技术生成
最近项目遇到一个需求,需要打印excel,然后将打印记录进行持久化,还要对excel中的参数进行计算。最开始的思路是,调用java自身的api—— javax.print包下面的打印功能,把excel转化为freemarker模板,网友们基本都是这样做的。但是,理想跟现实总是有差距的,这样做得到的结果是,调用的打印机始终都是与服务器连接的打印机,并且java支持的打印只能打印图片格式的,并不能打印文档,只好放弃。
然后换策略。另一种思路:前端页面上输入excel需要的内容,通过poi对excel进行读写,然后将excel转化成HTML页面返回给前端,前端页面调用打印机,这样任何一台电脑都可以打印啦~~
上代码:
1.前端页面:
![excel需要的输入的内容](https://img-blog.csdnimg.cn/20181206103256111.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW4xODQyODMyNTE5OQ==,size_16,color_FFFFFF,t_70)
2.更新excel
public void updateExcel(PrintVo printVo)throws Exception{
        String filePath = productPath;
        File excelFile = new File(filePath);
        FileInputStream fileInputStream = new FileInputStream(excelFile);
        HSSFWorkbook workbook = new HSSFW
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要通过Java程序调用打印机打印Excel,可以使用Apache POI库读取Excel文件,并使用Java打印API进行打印。以下是基本的步骤: 1. 在程序中引入Apache POI库,读取Excel文件,并获取要打印的内容。示例代码如下: ``` FileInputStream fileInputStream = new FileInputStream("path/to/excel/file.xlsx"); XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); XSSFSheet sheet = workbook.getSheetAt(0); // 获取要打印的内容 String printContent = sheet.getRow(0).getCell(0).getStringCellValue(); ``` 2. 创建一个实现`Printable`接口的打印类,并实现`print()`方法。在`print()`方法中,你需要将要打印的内容绘制到`Graphics`对象中。示例代码如下: ``` public class MyPrintable implements Printable { private String printContent; public MyPrintable(String printContent) { this.printContent = printContent; } @Override public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { if (pageIndex > 0) { return NO_SUCH_PAGE; } // 绘制要打印的内容 graphics.drawString(printContent, 100, 100); return PAGE_EXISTS; } } ``` 3. 创建一个`PrinterJob`对象,并将`MyPrintable`对象设置为它的打印内容。示例代码如下: ``` PrinterJob printerJob = PrinterJob.getPrinterJob(); printerJob.setPrintable(new MyPrintable(printContent)); ``` 4. 调用`PrinterJob`的`printDialog()`方法,让用户选择打印机并设置打印属性。示例代码如下: ``` if (printerJob.printDialog()) { printerJob.print(); } ``` 完整的示例代码如下: ``` try { FileInputStream fileInputStream = new FileInputStream("path/to/excel/file.xlsx"); XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); XSSFSheet sheet = workbook.getSheetAt(0); // 获取要打印的内容 String printContent = sheet.getRow(0).getCell(0).getStringCellValue(); PrinterJob printerJob = PrinterJob.getPrinterJob(); printerJob.setPrintable(new MyPrintable(printContent)); if (printerJob.printDialog()) { printerJob.print(); } } catch (IOException | PrinterException e) { e.printStackTrace(); } public class MyPrintable implements Printable { private String printContent; public MyPrintable(String printContent) { this.printContent = printContent; } @Override public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { if (pageIndex > 0) { return NO_SUCH_PAGE; } // 绘制要打印的内容 graphics.drawString(printContent, 100, 100); return PAGE_EXISTS; } } ``` 注意:打印Excel时需要注意Excel中的格式,确保打印出来的内容符合预期。另外,如果要打印多页内容,需要在`print()`方法中处理多页情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值