使用 java 操作" />
乔山办公网我们一直在努力
您的位置:乔山办公网 > word文档 > 用<em>java</em>怎么将<em>word</em>文档转成&l

用<em>java</em>怎么将<em>word</em>文档转成&l

作者:乔山办公网日期:

返回目录:word文档


我之前就 弄过 对Excel的操作 也不是很熟 用JXL 或 POI

使用 java 操作 openoffice 实现格式转换 辛苦了几天。 不敢独享成果

首先,要安装 openoffice (废话- -)
创建JAVA项目的时候 需要至少以下4个包

juh.jar,jurt.jar,ridl.jar,unoil.jar
以下是路径
..\OpenOffice.org 2.3\program\classes

我只实现了我要的功能,就是把一种文件格式转成另一种

Java代码
package testh;

import java.io.*;
import com.sun.star.uno.UnoRuntime;

public class testcls {

public static void readdoc(String paths, String savepaths)
{
File d = new File(paths);
//取得当前文件夹下所有文件和目录的列表
File lists[] = d.listFiles();
String pathss = new String("");

//对当前目录下面所有文件进行检索
for(int i = 0; i < lists.length; i ++)
{
if(lists[i].isFile())
{
String filename = lists[i].getName();
String filetype = new String("");
//取得文件类型
filetype = filename.substring((filename.length() - 3), filename.length());

//判断是否为doc文件
if(filetype.equals("doc"))
{
System.out.println("当前正在检索....");
//打印当前目录路径
System.out.println(paths);
//打印doc文件名
String fname=filename.substring(0, (filename.length() - 4));
System.out.println("检索到文件"+fname);
try
{
//指定文件路径和名称
String path = savepaths+fname+".html";
File outfilename = new File(path);

/** *//**
* 检查文件是否存在.
* @throws IOException
*
*/

if (!outfilename.exists()) {
System.err.println("目标路径无同名文件,开始转换");

System.out.print("正在转换文件:"+fname);
Dump(paths,fname,savepaths);

}
else
{
System.out.print("文件已存在,放弃创建,请处理存在文件后再运行...\n");
continue;
}

RandomAccessFile mm = null;

}
catch(Exception e)
{
e.printStackTrace();
}
}

}

}

}

public static void Dump(String FilePath,String FileName,String OutPath)
{
com.sun.star.uno.XComponentContext xContext = null;

try {
// get the remote office component context
xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();
System.out.println("Connected to a running office ...");

// get the remote office service manager
com.sun.star.lang.XMultiComponentFactory xMCF =
xContext.getServiceManager();

Object oDesktop = xMCF.createInstanceWithContext(
"com.sun.star.frame.Desktop", xContext);

com.sun.star.frame.XComponentLoader xCompLoader =
(com.sun.star.frame.XComponentLoader)
UnoRuntime.queryInterface(
com.sun.star.frame.XComponentLoader.class, oDesktop);

java.io.File sourceFile = new java.io.File(FilePath+FileName+".doc");//读取的文件
StringBuffer sLoadUrl = new StringBuffer("file:///");
sLoadUrl.append(sourceFile.getCanonicalPath().replace('\\', '/'));

sourceFile = new java.io.File(OutPath+FileName+".html");//输出的文件
System.out.print(OutPath+" "+FileName);
StringBuffer sSaveUrl = new StringBuffer("file:///");
sSaveUrl.append(sourceFile.getCanonicalPath().replace('\\', '/'));

com.sun.star.beans.PropertyValue[] propertyValue =
new com.sun.star.beans.PropertyValue[1];
propertyValue[0] = new com.sun.star.beans.PropertyValue();
propertyValue[0].Name = "Hidden";
propertyValue[0].Value = new Boolean(true);

Object oDocToStore = xCompLoader.loadComponentFromURL(
sLoadUrl.toString(), "_blank", 0, propertyValue );
com.sun.star.frame.XStorable xStorable =
(com.sun.star.frame.XStorable)UnoRuntime.queryInterface(
com.sun.star.frame.XStorable.class, oDocToStore );

propertyValue = new com.sun.star.beans.PropertyValue[ 2 ];
propertyValue[0] = new com.sun.star.beans.PropertyValue();
propertyValue[0].Name = "Overwrite";
propertyValue[0].Value = new Boolean(true);
propertyValue[1] = new com.sun.star.beans.PropertyValue();
propertyValue[1].Name = "FilterName";
propertyValue[1].Value = "HTML (StarWriter)";//你一定发现了,把这里改e799bee5baa6e79fa5e98193e58685e5aeb9365成其他参数,可以保存为不同的文件 MS Word 97,writer_pdf_Export
xStorable.storeAsURL( sSaveUrl.toString(), propertyValue );

System.out.println("\nDocument \"" + sLoadUrl + "\" saved under \"" +
sSaveUrl + "\"\n");

com.sun.star.util.XCloseable xCloseable = (com.sun.star.util.XCloseable)
UnoRuntime.queryInterface(com.sun.star.util.XCloseable.class,
oDocToStore );

if (xCloseable != null ) {
xCloseable.close(false);
} else
{
com.sun.star.lang.XComponent xComp = (com.sun.star.lang.XComponent)
UnoRuntime.queryInterface(
com.sun.star.lang.XComponent.class, oDocToStore );
xComp.dispose();
}
System.out.println("document closed!");
}
catch( Exception e ) {
e.printStackTrace(System.err);
System.exit(1);
}
}

public static void main(String args[]) throws Exception
{
String paths = new String("c:\\a\\");
String savepaths = new String ("f:\\");
readdoc(paths,savepaths);

}

}
itext能操作word 没具体应用过 上网查查吧

e799bee5baa6e997aee7ad94e59b9ee7ad94362public class CreateWordDemo
{

  public void createDocContext(String file)
throws DocumentException,IOException {

  //
设置纸张大小

  Document document = new
Document(PageSize.A4);

  //
建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
RtfWriter2.getInstance(document, new
FileOutputStream(file));

  document.open();

  //
设置中文字体

  BaseFont bfChinese =
BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);

  //
标题字体风格

  Font titleFont = new Font(bfChinese, 12,
Font.BOLD);

  //
正文字体风格

  Font contextFont = new Font(bfChinese, 10,
Font.NORMAL);

  Paragraph title = new
Paragraph("标题");

  //
设置标题格式对齐方式

  title.setAlignment(Element.ALIGN_CENTER);

  title.setFont(titleFont);

  document.add(title);

  String contextString =
"iText是一个能够快速产生PDF文件的java类库。"

  + " \n"//
换行
+
"iText的java类对于那些要产生包含文本,"

  + "表格,图形的只读文档是很有用的。它的类库尤其与java
Servlet有很好的给合。"

  +
"使用iText与PDF能够使你正确的控制Servlet的输出。";

  Paragraph context = new
Paragraph(contextString);

  //
正文格式左对齐

  context.setAlignment(Element.ALIGN_LEFT);

  context.setFont(contextFont);

  //
离上一段落(标题)空的行数

  context.setSpacingBefore(5);

  //
设置第一行空的列数

  context.setFirstLineIndent(20);

  document.add(context);

  //
利用类FontFactory结合Font和Color可以设置各种各样字体样式

  

  Paragraph underline = new Paragraph("下划线的实现",
FontFactory.getFont(
FontFactory.HELVETICA_BOLDOBLIQUE, 18,
Font.UNDERLINE, new Color(0, 0,
255)));

  document.add(underline);

  // 设置 Table
表格

  Table aTable = new
Table(3);

  int width[] = { 25, 25, 50
};

  aTable.setWidths(width);//
设置每列所占比例

  aTable.setWidth(90); // 占页面宽度
90%

  aTable.setAlignment(Element.ALIGN_CENTER);//
居中显示

  aTable.setAlignment(Element.ALIGN_MIDDLE);//
纵向居中显示

  aTable.setAutoFillEmptyCells(true); //
自动填满

  aTable.setBorderWidth(1); //
边框宽度

  aTable.setBorderColor(new Color(0, 125, 255)); //
边框颜色

  aTable.setPadding(2);//
衬距,看效果就知道什么意思了

  aTable.setSpacing(3);//
即单元格之间的间距

  aTable.setBorder(2);//
边框
//
设置表头

  

  Cell haderCell = new
Cell("表格表头");

  haderCell.setHeader(true);

  haderCell.setColspan(3);

  aTable.addCell(haderCell);

  aTable.endHeaders();

  Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,
Color.GREEN);

  Cell cell = new Cell(new Phrase("这是一个测试的 3*3 Table 数据",
fontChinese));
cell.setVerticalAlignment(Element.ALIGN_TOP);

  cell.setBorderColor(new Color(255, 0,
0));

  cell.setRowspan(2);

  aTable.addCell(cell);

  aTable.addCell(new
Cell("#1"));

  aTable.addCell(new
Cell("#2"));

  aTable.addCell(new
Cell("#3"));

  aTable.addCell(new
Cell("#4"));

  Cell cell3 = new Cell(new Phrase("一行三列数据",
fontChinese));

  cell3.setColspan(3);

  cell3.setVerticalAlignment(Element.ALIGN_CENTER);

  aTable.addCell(cell3);

  document.add(aTable);

  document.add(new
Paragraph("\n"));

  //
添加图片 Image.getInstance即可以放路径又可以放二进制字节流

  Image img =
Image.getInstance("d:\\img01800.jpg");

  img.setAbsolutePosition(0,
0);

  img.setAlignment(Image.RIGHT);//
设置图片显示位置

  img.scaleAbsolute(60, 60);//
直接设定显示尺寸

  //
img.scalePercent(50);//表示显示的大小为原尺寸的50%

  // img.scalePercent(25,
12);//图像高宽的显示比例

  //
img.setRotation(30);//图像旋转一定角度

  document.add(img);

  document.close();

  }

  

  public static void main(String[] args)
{

  CreateWordDemo word = new
CreateWordDemo();

  String file =
"d:/demo1.doc";

  try
{

  word.createDocContext(file);

  } catch (DocumentException e)
{

  e.printStackTrace();

  } catch (IOException e)
{

  e.printStackTrace();

  }

  }
  }

相关阅读

关键词不能为空
极力推荐
  • 真正的word实用技巧!其实你只掌握了1%-word画图

  • word画图,比如说逗号、顿号或者空格号等;②然后选定文本,之后点击插入表格,选择将文本转换为表格即可。具体操作如下:二、表格转文本①选中表格之后,我们需要点击布局;②之

ppt怎么做_excel表格制作_office365_word文档_365办公网