1.下载jacob插件
链接:百度网盘 请输入提取码
提取码:8wd7
2. 添加jar包到项目中
2.1 第一种方式 可以将jar包放到项目
2.2 第二种方式 将jar包放到maven仓库
3.将jar包中的两个dll文件添加到jre/bin目录下面
4.编写代码,执行测试类即可
方法的第一个参数为 文件地址,第二个参数为打印机名称
注意:最好在excel文件中设置好打印机的属性,之后直接调用方法,就可以看到你想要的的打印效果
package com.seagetech.dawang.common.utils;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import java.io.File;
/**
* @program: api
* @description: 打印机工具类
* @author: tt_wang
* @create: 2021-03-22 16:23
**/
public class PrintUtils {
/**
* 打印Excel文件
* @param filePath 文件路径
*/
public static boolean printFileAction(String filePath,String printerName){
boolean returnFlg = false;
try {
ComThread.InitSTA();
ActiveXComponent xl = new ActiveXComponent("Excel.Application");
// 不打开文档
Dispatch.put(xl, "Visible", new Variant(false));
Dispatch workbooks = xl.getProperty("Workbooks").toDispatch();
Object[] object = new Object[8];
object[0] = Variant.VT_MISSING;
object[1] = Variant.VT_MISSING;
object[2] = Variant.VT_MISSING;
object[3] = new Boolean(false);
object[4] = printerName;
object[5] = new Boolean(false);
object[6] = Variant.VT_MISSING;
object[7] = Variant.VT_MISSING;
// 判断文件是否存在
boolean fileExistFlg = fileExist(filePath);
if (fileExistFlg) {
Dispatch excel=Dispatch.call(workbooks,"Open",filePath).toDispatch();
// 开始打印
Dispatch.callN(excel,"PrintOut",object);
returnFlg = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 始终释放资源
ComThread.Release();
}
return returnFlg;
}
/**
* 判断文件是否存在.
* @param filePath 文件路径
* @return
*/
private static boolean fileExist(String filePath){
boolean flag = false;
try {
File file = new File(filePath);
flag = file.exists();
}catch (Exception e) {
e.printStackTrace();
}
return flag;
}
public static void main(String[] args) {
PrintUtils.printFileAction("D:\\home\\CW02加工机\\20210323\\aa.xlsx","HP LaserJet MFP M129-M134 PCLm-S(网络)");
}
}
5.关于一个web容器下面多个项目同时调用jacob.jar的底层方法,抛出 jacob-1.1.17-x64.dll already loaded in another classloader jacob
解决方案
1.在tomcat\lib包下面添加jacob的jar包
2.手动删除各个web项目下lib库下面的jacob.jar包