4. Объединение ячеек таблицы
Эффект:
Таблица
Имя | Другая информация |
---|---|
Чжан Сан | 26 |
Ван Ву | 18 |
Чжао Лю | 2 |
Ли Сы | 50 |
Янь Ци | 80 |
Примечание: объединение ячеек обрабатывается в соответствии с группировкой по полу, но порядок в списке не гарантируется.
Код:
public void mergeTable() throws FileNotFoundException {
List<Person> people = SpecDataFactory.tableData();
// Группировка данных по полу и объединение обработки столбцов пола, имитируя группировку SQL, но не гарантируя порядок списка
Map<String, List<Person>> groupBySex = people.stream().collect(Collectors.groupingBy(Person::getSex));
DocumentExporter.create()
.headingParagraph("Список сотрудников", ParagraphStyle.SUB_HEADING)
// Необходимо указать количество строк и столбцов таблицы
.table(people.size() + 2, 3, t -> {
// Объединение строк заголовка таблицы
t.row(r -> r.cell(c -> c.boldText("Имя").rowspan(2)).cell(c -> c.boldText("Другая информация").colspan(2)))
// Объединение данных строк
.row(r -> r.headCells("Имя", "Возраст", "Пол"));
groupBySex.forEach((key, value) -> {
AtomicBoolean merged = new AtomicBoolean();
int rowspan = value.size();
t.rows(value, (it, r) ->
r.dataCells(it::getName, it::getAge)
.cell(c -> {
c.text(it::getSex);
// Объединение строки один раз
if (!merged.get()) {
merged.set(true);
c.rowspan(rowspan);
}
})
);
});
})
.writeTo(new FileOutputStream(FileUtil.brotherPath(DocumentExporterSpec.class, "merge-table.docx")));
}
5. Простые верхний и нижний колонтитулы
Эффект:
Я верхний колонтитул Заголовок один Это основной текст, это основной текст, это основной текст, это основной текст, это основной текст, это основной текст, это основной текст, это основной текст Я нижний колонтитул
Объяснение: верхний и нижний колонтитулы выровнены по левому краю, и если есть несколько страниц, то на каждой странице есть верхний и нижний колонтитулы.
Код:
public void simpleHeaderAndFooter() throws FileNotFoundException {
DocumentExporter.create()
.headingParagraph("Заголовок один", ParagraphStyle.HEADING_1)
.textParagraph("Это основной текст, это основной текст, это основной текст, это основной текст, это основной текст, это основной текст, это основной текст, это основной текст")
.header("Я верхний колонтитул")
.footer("Я нижний колонтитул")
.writeTo(
new FileOutputStream(FileUtil.brotherPath(DocumentExporterSpec.class, "simple-header-foote1r.docx"))
);
}
6. Нижний колонтитул со страницами
Эффект:
Информация о сотрудниках компании Личная информация Чжан Саня
Имя | Возраст | Пол |
---|---|---|
Чжан Сань | 26 лет | Женщина |
Разделитель страниц (эффект страницы в Word) Страница 1/всего 5 страниц
Информация о компании Личная информация Ли Си
Имя | Возраст | Пол |
---|---|---|
Ли Си | 50 лет | Мужчина |
Разделитель страниц (эффект страницы в Word) Страница 2/всего 5 страниц … Всего 5 страниц 5 страниц
public void complexHeaderAndFooter() throws FileNotFoundException {
List<Person> people = SpecDataFactory.tableData();
DocumentExporter.create()
// 多个文档 自动添加分页符
.documents(people, (it, d) ->
// 分页文档
d.headingParagraph(it.getName() + "个人信息", ParagraphStyle.SUB_HEADING)
.table(2, 3, t ->
t.row(r -> r.headCells("姓名", "年龄", "性别"))
.row(r -> r.dataCells(it::getName, it::getAge, it::getSex))
)
)
.header(HeaderFooterType.DEFAULT, h -> h.text("某公司职工信息"))
.footer(HeaderFooterType.DEFAULT, f -> f.page("第", "页/共", "页"))
.writeTo(new FileOutputStream(FileUtil.brotherPath(this.getClass(), "complex-header-footer.docx")));
}
7. Картинки (заглавный рисунок, рисунок таблицы, рисунок верхнего колонтитула, рисунок нижнего колонтитула)
Эффект:
«Я — рисунок верхнего колонтитула»
<p style="margin-bottom: 30px;"> Я — рисунок верхнего колонтитула
<img src="./src/test/resources/b.png" style="width: 30px; height: 30px; margin-left: 0px;" />
</p>
«Список сотрудников»
Имя | Возраст | Пол | Рисунок | Текст и рисунок |
---|---|---|---|---|
Чжан Сань | 26 | Женщина | ![]() |
Я — рисунок ячейки таблицы ![]() |
Ли Сы | 50 | Мужчина | ![]() |
Я — рисунок ячейки таблицы ![]() |
Ван У | 18 | Женщина | ![]() |
Я — рисунок ячейки таблицы ![]() |
Чжао Лю | 2 | Женщина | ![]() |
Я — рисунок ячейки таблицы ![]() |
Янь Ци | 80 | Мужчина | ![]() |
Я — рисунок ячейки таблицы ![]() |
«Я — рисунок основного текста»
<img src="./src/test/resources/c.gif"/>
Объяснение: поддерживаются форматы изображений gif, jpg, png, bmp, можно добавлять изображения в абзацы, ячейки таблиц, верхний колонтитул и нижний колонтитул.
public void picture() throws FileNotFoundException {
List<Person> people = SpecDataFactory.tableData();
DocumentExporter.create()
.headingParagraph("Список сотрудников", ParagraphStyle.SUB_HEADING)
// Нужно указать количество строк и столбцов таблицы
.table(people.size() + 1, 5, t ->
// Строка заголовка автоматически выделяется жирным шрифтом
t.row(r -> r.headCells("Имя", "Возраст", "Пол", "Рисунок", "Текст и рисунок"))
// Данные строки отображаются обычным шрифтом
.rows(people, (p, r) ->
r.dataCells(p::getName, p::getAge, p::getSex)
// В ячейку таблицы добавляется изображение
.pictureCell(new
``` ```
File(FileUtil.brotherPath(DocumentExporterSpec.class, "c.gif")), 20, 20)
.cell(c ->
c.text("我是单元格图片")
.pictureParagraph(
new File(FileUtil.brotherPath(DocumentExporterSpec.класс, "c.gif")),
20,
20
)
)
)
// 段落图片
.textParagraph("我是正文图片")
.pictureParagraph(new File(FileUtil.brotherPath(DocumentExporterSpec.class, "c.gif")), 400, 150)
// 页眉图片
.header(HeaderFooterType.DEFAULT, h ->
h.textParagraph("я — страница с изображением заголовка")
.pictureParagraph(new File(FileUtil.brotherPath(DocumentExporterSpec.class, "b.png")), 20, 20)
)
// 页脚图片
.footer(HeaderFooterType.DEFAULT, f ->
f.textParagraph("я — страница с изображением нижнего колонтитула")
.pictureParagraph(new File(FileUtil.brotherPath(DocumentExporterSpec.class, "b.png")), 20, 20)
)
.writeTo(new FileOutputStream(FileUtil.brotherPath(DocumentExporterSpec.class, "picture.docx")));
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )