2011-02-09 5 views

ответ

2

Какой формат является файлом слова, который вы хотите изменить? (OLE2, WordML, docx?)

Обычно наиболее распространенной библиотекой для модификации файла MSOffice является Apache POI.

Также this tutorial, вероятно, будет полезен в вашем текущем случае.

2

Просто идея:

В первом вам нужно будет загрузить WordAPI, который можно загрузить прямо here. Чтобы создать текстовые документы с помощью JAVA, есть класс, который делает все, что вам нужно. Класс называется WordProcessing.

Вот краткий предварительный просмотр методов, реализованных в этом классе:

  • createNewDocumentFromTemplate (String TemplateName)
  • createNewDocumentFromTemplateToSelectByUser()
  • setNoteNotMatchingBookmarks (булевы noteNotMatchingBookmarks)
  • typeTextAtBookmark (String закладкой, String textToType)
  • typeTextAtBookmark (String bookmark, String [] linesToType)
  • changeDocumentDirectory (Строка documentDirectory)
  • saveDocumentAs (String DocumentName)
  • saveDocumentAsAndClose (Строка DocumentName)
  • closeDocument()
  • printAndForget()
  • printToPrinterToSelectByUserAndForget()
  • printAndForget (String PRINTERNAME)
  • executeMacro (String macroName) < ---- Интересно для вас
  • quitApplication()
  • Exec()

Как вы можете видеть, что есть много полезных функций для создания документа.

Теперь вы можете вставить изображение, вызвав функцию executeMacro.

Макрос может выглядеть следующим образом:

Option Explicit 

Sub InsertPicture() 

    Dim sPath As String 
    Dim sBildPfad As String 
    Dim lRes As Long 

    'The path of your picture 
    sBildPfad = "C:\temp" 

    'remember the current path of the picture 
    sPath = Options.DefaultFilePath(Path:=wdPicturesPath) 

    'changing the path 
    Options.DefaultFilePath(Path:=wdPicturesPath) = sBildPfad 

    'open dialog 
    lRes = Application.Dialogs(wdDialogInsertPicture).Show 

    'reset path 
    Options.DefaultFilePath(Path:=wdPicturesPath) = sPath 

    If lRes <> 0 And ActiveDocument.InlineShapes.Count > 0 Then 
     'if inserted, changing the size 
     Call PicSize(ActiveDocument.InlineShapes(ActiveDocument.InlineShapes.Count)) 
    End If 

End Sub 

Sub PicSize(oPic As InlineShape) 
    Dim iScale As Single 
    Dim iWidth As Single 

    iWidth = 200 ' (pixel) 

    oPic.LockAspectRatio = msoTrue 
    ' scaling 
    iScale = (iWidth/oPic.Width) * 100 
    oPic.ScaleWidth = iScale 
    oPic.ScaleHeight = iScale 
End Sub 
+0

Является ли аргумент macroname, должен содержать код макроса, если нет, как мы можем его передать? –

1

Предполагая DOCX ОК, вы можете использовать docx4j. AddImage образец включает в себя:

org.docx4j.wml.P p = newImage(wordMLPackage, bytes, 
      filenameHint, altText, 
      id1, id2); 
// Now add our p to the document 
wordMLPackage.getMainDocumentPart().addObject(p); 

Нет необходимости быть запущен Слово для docx4j работать.

ps Поскольку ваш вопрос отмечен как «свинг», вы можете пожелать Google «docx4all» для текстового процессора docx, реализованного с использованием Swing, который отображает изображения.

+0

Я пробовал это, но мне это не удалось. что такое использование файла AddImage.java. я прошел через код, но у меня нет четкой идеи. Не могли бы вы объяснить мне, что такое использование этого кода. – jcrshankar

Смежные вопросы