从liberoffce生成excel
第一步:安装LibreOffice for Windows。
1.1去官网LibreOffice。
. libreoffice.org/
1.2下载
1.2.1第一步:进入官网,点击下载。
1.2.2第二步:选择适合自己系统的版本。
1.2.2第三步:在红框中点击下载。
1.3安装和配置
1.3.1第一步:双击下载的文件。
1.3.2第二步:点击下一步。
1.3.3第三步:在这里选择自定义。
1.3.4第四步:可以使用这里默认的路劲或者选择自己安装路劲。
1.3.5第五步:点击下一步。
1.3.6第六步:点击安装。
1.3.7第7步:如果windows10 = >右键单击鼠标选择Attribute = & gt高级系统设置= & gt环境变量= & gt找到系统环境变量path,创建并添加路径D:\LibreOffice\program(注意这个路径是根据自己安装的路劲配置的,我的安装在D盘下)。
1.3.8步骤8然后windows+R打开cmd命令窗口= & gt输入officeopen libre office表示安装成功。
第二步:用java代码操作LibreOffice将(doc,ppt,xls)文件转换成PDF文件。
1.1: Open IDEA或eclipse创建SpringBoot项目。
pom.xml
& lt?xml版本="1.0 "编码="UTF-8 "?& gt& ltproject xmlns = " . Liu app . workable . converter & lt;/groupId & gt;
& ltartifactId & gt可工作转换器& lt/artifact id & gt;
& lt版本& gtv 1 . 4 . 2 & lt;/version & gt;
& lt/dependency & gt;
& lt依赖性& gt
& ltgroupId & gtorg . spring framework . boot & lt;/groupId & gt;
& ltartifactId & gt弹簧启动起动器测试& lt/artifact id & gt;
& lt范围& gt测试& lt/scope & gt;
& lt/dependency & gt;
& lt/dependencies & gt;
& lt构建& gt
& lt插件& gt
& lt插件& gt
& ltgroupId & gtorg . spring framework . boot & lt;/groupId & gt;
& ltartifactId & gtspring-boot-maven-plugin</artifact id & gt;
& lt/plugin & gt;
& lt/plugins & gt;
& lt/build & gt;& lt/project & gt;12345678910111213141516171819202122232425262728293031323334353637383940
1.2创建ConvertOfficePDFUtils.java类。自己取文件名。
/**
* @描述libreoffice工具类
* @作者holle
* @create 2020/12/24
* @自1.0.0
*/package com . file . preview . utils;导入org . slf4j . logger;导入org . SLF 4j . logger factory;导入org . spring framework . stereotype . service;导入Java . io . io exception;导入Java . io . inputstream;@ service public class ConvertOfficePDFUtils {
private static Logger Logger = Logger factory . get Logger(convertofficepdfutils . class);
/**
*使用libreOffice将Office文档转换为pdf。
* @param inputFile?目标文件地址
* @param pdfFile输出文件夹
* @返回
*/
public static boolean convertOfficePDF(String input file,String pdfFile){
long start = system . current time millis();
字符串命令;
布尔标志;
string osName = system . getproperty(" OS . name ");
if(osname . contains(" Windows ")){
command = " cmd/c start soffice-headless-invisible-convert-to pdf:writer _ pdf _ Export "+input file+"-outdir "+pdf file;
}否则{
command = " libre office-headless-invisible-convert-to pdf:writer _ pdf _ Export "+input file+"-outdir "+pdf file;
}
flag =executeLibreOfficeCommand(命令);
long end = system . current time millis();
Logger.debug ("Time: {} ms ",end-start);
返回标志;
}
/**
*执行命令指令
* @param命令
* @返回
*/
公共静态布尔executeLibreOfficeCommand(字符串命令){
Logger.info("开始转换……");
工艺流程;//进程可以控制子进程的执行或者获取子进程的信息。
尝试{
logger . debug(" convertoffice 2 pdf cmd:{ } ",命令);
process = Runtime.getRuntime()。exec(命令);exec()方法指示Java虚拟机创建一个子进程来执行指定的可执行程序,并返回子进程对应的进程对象实例。
//下面两个可以得到iostream。
InputStream errorStream = process . get errorStream();
InputStream InputStream = process . getinputstream();
} catch (IOException e) {
logger . error(" convertoffice 2 pdf { } error ",命令,?e);
返回false
}
int exit status = 0;
尝试{
exit status = process . wait for();//等待子流程完成后再执行。返回值是子线程的返回值,返回0表示正常结束。
//接受返回值的第二个方法
int I = process . exit value();//执行后接收返回值。
logger . debug(" I-"+I);
} catch (InterruptedException e) {
logger . error(" interrupted exception?convertOffice2PDF { }”,命令,e);
返回false
}
if (exitStatus!= 0) {
logger . error(" convertoffice 2 pdf cmd exit status { } ",exit status);
}否则{
logger . debug(" convertoffice 2 pdf cmd exit status { } ",exit status);
}
process . destroy();//销毁子进程
Logger.info("转换结束...");
返回true
}} 1234567891011121314151617181920212223242526272829303132333435363738 3940414243444546474849505152535455565758596061626364656667686970717273747576777879
1.3创建一个测试类
/**
* @描述测试类
* @作者holle
* @create 2020/12/24
* @自1.0.0
*/package com . test;导入com . file . preview . filepreviewapplication;导入com . file . preview . utils . convertofficepdfutils;导入org . JUnit . test;导入org . JUnit . runner . run with;导入org . spring framework . boot . test . context . spring boot test;导入org . spring framework . test . context . JUnit 4 . spring JUnit 4 class runner;导入javax . annotation . resource;导入Java . io . io exception;@ run with(spring JUnit 4 class runner . class)@ spring boot test(classes = file previe application . class)公共类TestOffice {
@资源
private ConvertOfficePDFUtils ConvertOfficePDFUtils;
@测试
public void JunintTestPDF(){
long start = system . current time millis();
string src path = " C:/Users/holler/Desktop/*/*。docx ",des path = " C:/Users/holler/Desktop/* ";
字符串命令= " ";
string osName = system . getproperty(" OS . name ");
if(osname . contains(" Windows ")){
//输入cmd命令;Add: srcPath表示文件所在的路径;文件输出的路径。
command = " so ffice-headless-convert-to pdf "+src path+"-outdir "+desPath;
convertofficepdfutils . executelibreofficecommand(命令);
}
long end = system . current time millis();
system . out . println(" Time:{ } ms "+(end-start));
}
} ?1234567891011121314151617181920212223242526272829303132333435363738
path+"-outdir "+desPath;
convertofficepdfutils . executelibreofficecommand(命令);
}
long end = system . current time millis();
system . out . println(" Time:{ } ms "+(end-start));
}
}