网站首页 > 精选教程 正文
在 Web 应用程序或者项目的某些批处理程序中,将 Excel 转换为 PDF 文件的需求是常见的。对于 Excel 转换 PDF 的方法,从使用方便性和开发效率上来讲,使用 Python 语言目前没有合适的方法来进行转换,所以必须借助使用其他语言的方法来实现,本次我们采用 Java 语言来进行 Excel 转换 PDF,然后由 Python 语言调用来实现整个转换过程。
开发工具 |
Idea |
Java |
Spire.XLS for Java |
PyCharm |
flask |
1.Excel 转换 PDF
采用 Java 语言来实现,通过 Spire.XLS for Java 组件,组件下载地址:
https://www.e-iceblue.cn/Downloads/Free-Spire-XLS-JAVA.html
如下图:
开发工具采用 IDEA,项目结构如下图:
将下载的组件 Spire.Xls.jar 放到项目的libs目录下,并将jar文件引入项目,选择 File -> Project Structure,单击Modules,单击+,如下图:
Excel2PDF类代码:
package com.zhqy.excel2pdf;
import com.spire.xls.*;
public class Excel2PDF {
public static void excel2pdf(String excelFileName, String pdfFileName) {
//加载Excel文档
Workbook wb = new Workbook();
wb.loadFromFile(excelFileName);
//调用方法保存为PDF格式
wb.saveToFile(pdfFileName, FileFormat.PDF);
}
public static void workbook2pdf(String excelFileName, int workbookIndex, String pdfFileName) {
//加载Excel文档
Workbook wb = new Workbook();
wb.loadFromFile(excelFileName);
//获取第2个工作表
Worksheet sheet = wb.getWorksheets().get(workbookIndex);
//调用方法保存为PDF格式
sheet.saveToPdf(pdfFileName);
}
}
Main类代码:
package com.zhqy.excel2pdf;
public class Main {
public static void main(String[] args) {
if (args.length != 2 && args.length != 3) {
System.out.println("Usage: java com.zhqy.excel2pdf.Main <excel file name> [<excel workbook index>] <pdf file name>");
return;
}
String excelFileName, pdfFileName;
int workbookIndex;
excelFileName = args[0];
if (args.length == 2) {
pdfFileName = args[1];
Excel2PDF.excel2pdf(excelFileName, pdfFileName);
}
if (args.length == 3) {
workbookIndex = Integer.parseInt(args[1]);
pdfFileName = args[2];
Excel2PDF.workbook2pdf(excelFileName, workbookIndex, pdfFileName);
}
}
}
可以直接使用 Main 类进行命令行操作来完成转换工作。
将 Java 类打包,选择 File -> Project Structure,单击 Artifacts,如下图:
2.在 Python Web 项目中使用
Web 项目采用 flask 框架,具体的 flask 项目不在此赘述,Python 调用 Java 程序采用 jpype,安装:
pip3 install jpype1
在项目中增加一个包 utils,在包中创建 excel2pdf.py,代码如下:
# coding: utf-8
import jpype
import os
def excel2pdf(excel_file_name, pdf_file_name):
# JVM默认路径、Jar文件路径
jvm_path = jpype.getDefaultJVMPath()
ext_classpath = '/excel2pdf.jar'
jvm_arg = '-Djava.class.path=' + ext_classpath
# 启动JVM
if not jpype.isJVMStarted():
jpype.startJVM(jvm_path, jvm_arg)
# 测试输出
jpype.java.lang.System.out.println('hello world! ')
# Excel转PDF类
Excel2PDF = jpype.JClass('com.zhqy.excel2pdf.Excel2PDF')
Excel2PDF.excel2pdf(excel_file_name, pdf_file_name)
def workbook2pdf(excel_file_name, workbook_index, pdf_file_name):
# JVM默认路径、Jar文件路径
jvm_path = jpype.getDefaultJVMPath()
ext_classpath = '/excel2pdf.jar'
jvm_arg = '-Djava.class.path=' + ext_classpath
# 启动JVM
if not jpype.isJVMStarted():
jpype.startJVM(jvm_path, jvm_arg)
# 测试输出
jpype.java.lang.System.out.println('hello world! ')
# Excel转PDF类
Excel2PDF = jpype.JClass('com.zhqy.excel2pdf.Excel2PDF')
Excel2PDF.workbook2pdf(excel_file_name, workbook_index, pdf_file_name)
jar 文件需要复制到某个目录,本例中直接复制到了 python 项目所在磁盘的根目录,所以有下面的代码:
ext_classpath = '/excel2pdf.jar'
接下来就可以直接在 flask 项目中调用 utils 包中的方法进行文件格式转换。
猜你喜欢
- 2024-11-26 Python 和 Java 基础对比 10 —— 类的封装、继承和多态
- 2024-11-26 Python和Java哪个就业前景好些?
- 2024-11-26 "从Python到Java:一只小猫的大象之旅"
- 2024-11-26 selenium的IDE插件进行录制和回放并导出为python/java脚本(10)
- 2024-11-26 会java学python快吗
- 2024-11-26 恭喜Uzi复出!整理的全套python,java教程,拿走不谢
- 2024-11-26 Python 和 Java 基础对比 07 —— breke,continue,return使用
- 2024-11-26 java和python先学哪个
- 2024-11-26 一次Java和Python的简单且直观的比较
- 2024-11-26 Python与Java进行对比,总结出一些有趣且基础的知识
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)