Доброго времени суток! Есть шаблон Word(.doc
), его необходимо открыть и на место закладок, которые имеются в документе, вставить текст, после сохранить как новый файл. Текст, который вносится в документ, должен быть прописан в коде.
Код который я смог реализовать прилагаю ниже, прошу помощи)
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class Zamena_text_file {
public static void main(String[] args)
{
// Путь к шаблону
String filename = "C:\\S.doc";
POIFSFileSystem fs = null;
try
{
fs = new POIFSFileSystem(new FileInputStream(filename));
HWPFDocument doc = new HWPFDocument(fs);
// добавление данных вместо "меток" в документе
Range range = doc.getRange();
range.replaceText("<name>", "953");
//range.tab("asa");
// создание нового файла
OutputStream out = new FileOutputStream("C:\\Отчет.doc");
// записать данные в файл
doc.write(out);
// заставляем поток закончить передачу данных.
out.flush();
// закрыть поток данных.
out.close();
// вывод сообщения в консоле
System.out.println("Файл Отчет.doc успешно создан!");
// Команда для запуска Excel файла
Runtime.getRuntime().exec("cmd /c C:\\Отчет.doc");
}
catch (Exception e)
{
// В случае ошибки(ок) вывести в консоль систем.ошибки
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
Пример кода для замены всех закладок:
Bookmarks bookmarks = document.getBookmarks();
for (int i = 0; i < bookmarks.getBookmarksCount(); i++){
Bookmark bookmark = bookmarks.getBookmark(i);
String value = getValue(bookmark.getName());
setTextInBookmark(bookmark, document, value);
}
private static void setTextInBookmark(Bookmark bookmark, HWPFDocument document, String text) {
final Range range = new Range(bookmark.getStart(), bookmark.getEnd(), document);
if (range.text().length() > 0) {
range.replaceText(text, false); // если в закладке уже есть значение - заменяем
}
else {
range.insertBefore(text);
}
}
//получение значения закладки в зависимости от ее наименования
private static String getValue(String bookmarkName) {
if (bookmarkName.equals("name1")) {
return "1";
}
if (bookmarkName.equals("name2")) {
return "2";
}
//....
return "default value";
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Приложение на java Spring, отображение на html+jQueryЕсть сущность для хранения в базе mySql
Добрый день, сделал простенькую пагинацию для своего проекта, хотел сделать чтобы выводилось хотя бы по 5 страниц (сделал это с помощью цыкла...
в БД PostgreSQL есть таблица Provider со строками id и nameТакже есть таблица Currencies с полями id и currency, и Countries с полями id и country