1. 用Java從word中提取出圖片
因為太長了, 我放我空間了
思路是2003以後, word就可存為xml, 二進制數據按base64編碼
然後可以按解析xml文檔方式獲取圖片數據
然後對它進行解碼--
2. java想要對已有word文檔追加圖片,應該怎麼做
以前做過其他office的沒做過微軟的,不過大同小異
這個你就需要在java中獲取到word的某種對象,方法有很多,但是要看你用什麼方式調用的office了,如果是某個牌子的中間件,那就用那個中間件的二次開發文檔裡面應該就有提到這些方法,如果是第三方的jar包,應該也不麻煩,通過jar包中的方法,可能要有一個word的實例創建的過程吧,然後獲取到range或者textrange等這些對象(應該是這倆對象……)通過這對象然後找到插入圖片的方法,然後傳入位置參數(可能是兩個數用逗號隔開)
3. 請問高手怎樣用java在word里插入一張圖呢
可以用wordapi組件來完成
import com.heavenlake.wordapi.Document;
public class test {
public test() {
Document doc = null;
try {
doc = new Document();
doc.open("e:/test.doc");//打開文件
doc.insert("第一章:嘻嘻哈哈","biaoti");//插入文字
doc.insertAtBookmark("testbookm","第一章:嘻嘻哈哈","標題");
doc.insertAtBookmark("testbookm",
new java.io.File("E:/照片/DSC236.JPG"));//插入圖片
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if(doc!=null) doc.close(true);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
test test1 = new test();
}
}
4. java 如何使用poi 在word 中插入圖片和數據,給我一個實現的例子,
實際上還真就得一個一個set進去
我現在做的程序就有這部分機能,思路就是excel→sheet→row
然後遍歷所有row,取出所有的cell放到一個存儲用結構體中。
無論如何,解析的過程都需要自己來寫的。
=======================================================
你的想法我明白,其實就是想要一個java與poi的databinding,定義好的數據模塊可以自動和excel的對應列進行匹配。但是這個東西確實就沒有啊,人家只封裝了讀取excel內容,沒有提供這樣的模塊,只有自己寫啊。即使是60個列,事實上綁定的邏輯也就只用寫一次,而且大部分的內容只要復制粘貼就好了。
如果像下面說的做循環,賦值簡單了,可是用的時候就痛苦了,要取某一個欄位的時候難道要用數組下標去取?
PS 鄙視5樓的,人家要的是數據導入,拷貝一段倒出的處理來。
5. 請教:如何用JAVA POI 向Word文檔里插圖片 請提供下代碼 謝謝!!!
樓主你可以這樣操作,導入java.io.*。org.apache.poi.hwpf.*。org.apache.poi.hwpf.usermodel.Picture
String savePath= "c:\\temp\\";
String docFile= savePath+ "test.doc";
String imgFile= savePath+ "img.jpg";
HWPFDocument poiDoc = new HWPFDocument(new FileInputStream(docFile));
List picList=poiDoc.getPicturesTable().getAllPictures();
Picture picture=(Picture)picList.get(0);
try {
picture.writeImageContent(new FileOutputStream(imgFile));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
6. 用java怎麼將word文檔轉成圖片格式
使用 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)";//你一定發現了,把這里改成其他參數,可以保存為不同的文件 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);
}
}
7. JAVA編輯WORD文件插入圖片
試試這個代碼,需要添加spire.doc jar依賴
importcom.spire.doc.Document;
importcom.spire.doc.FileFormat;
importcom.spire.doc.Section;
importcom.spire.doc.documents.*;
importcom.spire.doc.fields.DocPicture;
publicclassInsertImage{
publicstaticvoidmain(String[]args){
//實例化Document對象
Documentdoc=newDocument();
//載入文檔
doc.loadFromFile("C:\Users\Administrator\Desktop\test.docx");
//獲取第一個section
Sectionsection=doc.getSections().get(0);
//添加一個段落
Paragraphpara=section.addParagraph();
//添加圖片到段落
DocPicturepicture=para.appendPicture("C:\Users\Administrator\Desktop\Cartoon.png");
//設置文字環繞方式(居於文字上方)
picture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text);
//指定圖片的相對位置
picture.setHorizontalOrigin(HorizontalOrigin.Page);
picture.setHorizontalPosition(250f);
picture.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
picture.setVerticalPosition(150f);
//設置圖片大小
picture.setWidth(80f);
picture.setHeight(80f);
//保存到文檔
doc.saveToFile("output/InsertImage.docx",FileFormat.Docx);
}
}
生成的Word:
8. java中怎麼將word文檔怎麼生成圖片
public 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();
}
}
}
9. 用java如何添加圖片到word中,是直接添加不是解析,最好能有代碼
首先你得打開這個word文檔,然後你再把這個圖片做成文件流的格式,然後把它寫進去。
但是這個過程如果你用java自帶的文件流格式打開的話,寫進去會是亂碼。我做過的方法是用開源框架包,poi.jar可以用來做有關office的打開、寫入、讀出等操作,具體代碼沒有了,但是demo裡面的代碼都已經足夠了,你自己稍微看看就能知道怎麼做了。這個包還是比較穩定的。