Библиотека A4 для Java
Пакет ru.a4office:a4office открывает, правит, пересчитывает и сохраняет книги Excel, читает текст документов Word и добавляет слайды в презентации — из программы на Java. Внутри — ядра A4 Таблица, A4 Документ и A4 Презентация: ничего не компилируется, не нужны ни Microsoft Office, ни LibreOffice. Подключается из репозитория Maven на dl.plantype.ru — для Maven и Gradle.
Что умеет
- книги
.xlsx,.xlsm,.xlsb,.xls,.ods,.csv: открыть, записать число, текст или формулу, пересчитать, прочитать значения и диапазоны, сохранить; - документы
.docx: текст одной строкой кода; - презентации
.pptx: открыть, добавить слайд, узнать число слайдов, сохранить.
Java 11 и новее. На Java 11–21 ядра подключаются через JNA, на Java 22 и новее — через стандартный Foreign Function & Memory API. Ядра для macOS (Apple silicon и Intel), Linux x86-64 и aarch64, Windows x64 лежат внутри JAR: ничего не компилируется.
Установка
Пакет ru.a4office:a4office:2026.4.5 лежит в нашем репозитории Maven на сервере загрузок: https://dl.plantype.ru/a4office/release/maven. Зависимости — JNA и Jackson — берутся из Maven Central.
Maven
<repositories>
<repository>
<id>a4office</id>
<url>https://dl.plantype.ru/a4office/release/maven</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>ru.a4office</groupId>
<artifactId>a4office</artifactId>
<version>2026.4.5</version>
</dependency>
</dependencies>
Gradle
repositories {
mavenCentral()
maven { url = uri("https://dl.plantype.ru/a4office/release/maven") }
}
dependencies {
implementation("ru.a4office:a4office:2026.4.5")
}
Первый пример
Файлы для примеров: report.xlsx (открыть в A4 Таблице), contract.docx (открыть в A4 Документе), deck.pptx (открыть в A4 Презентации) — или все сразу: curl -O https://tech.plantype.ru/samples/report.xlsx -O https://tech.plantype.ru/samples/contract.docx -O https://tech.plantype.ru/samples/deck.pptx (в Windows — curl.exe). Подойдут и свои файлы.
Открыть книгу, записать ячейку, пересчитать и сохранить; прочитать текст документа; добавить слайд:
import ru.a4office.sdk.Office;
import java.nio.file.Path;
try (var workbook = Office.open("report.xlsx")) {
var sheet = workbook.sheet(workbook.sheetNames().get(0)); // первый лист
sheet.set("B11", 41).set("C11", "=B11+1"); // число, текст, null или формула
workbook.recalc();
System.out.println(sheet.get("C11")); // 42.0
workbook.save(Path.of("report-edited.xlsx"));
}
System.out.println(Office.text("contract.docx"));
try (var slides = Office.openPresentation("deck.pptx")) {
slides.addSlide().save(Path.of("deck-edited.pptx"));
System.out.println(slides.slideCount());
}
Значения диапазона — sheet.read("A1:B3"). save() без аргумента перезаписывает исходный файл. Ошибки — Office.OfficeException; кончилась квота — Office.LicenseQuotaException. Версия ядер внутри пакета — Office.coreVersion().
Что бесплатно
| Без ключа | С ключом разработчика | |
|---|---|---|
| Документов в сутки | 30 | 10 000 |
| Срок | без срока | 90 дней с выдачи |
| Когда квота кончилась | сразу исключение Office.LicenseQuotaException со ссылкой на этот раздел; без ожидания и без замедления | |
Квоту платят открытие и сохранение файла в любом из трёх ядер — книги, документы и презентации считаются вместе; правки внутри открытого файла, сколько бы ячеек вы ни меняли, не считаются. Чтобы получить ключ разработчика, напишите нам: вместе с ключом пришлём, как подключить его к вашей программе.
Где считается: в файле ~/.layers/a4office-state.json, а если задана переменная A4OFFICE_STATE_DIR — в этом каталоге. Ключ ищется по порядку: переменная A4OFFICE_LICENSE, файл из A4OFFICE_LICENSE_FILE, файл ~/.layers/license.jws. Ключ в последнем действует на все запуски на этой машине, и бесплатные 30 тогда не считаются; проверить бесплатный режим на такой машине — направить A4OFFICE_LICENSE_FILE на пустой файл.
Чего нет
- просмотрщика и редактора в браузере: показать документ людям — Сервер A4;
- преобразования в PDF и картинок страниц;
- документы Word в коротком API только читаются; правка — через низкоуровневый
Office.Session; - макросы VBA не исполняются.
Показать документ людям
Библиотека создаёт и меняет файлы внутри вашей программы. Просмотрщика и редактора в браузере в ней нет: Office.view() отвечает, где взять сервер, и ссылкой на его страницу. Показать документы людям и дать их править — задача остальных изделий A4:
- В браузере — Сервер A4. Файлы, которые создаёт ваша программа, открываются в редакторах A4 Документ, A4 Таблица и A4 Презентация на сервере организации; правка возвращается новой версией. Сервер A4; подключение к 1С и Битрикс24.
- На компьютере — настольные редакторы. A4 Документ, A4 Таблица и A4 Презентация для Windows, macOS и Linux. Скачать.
- Из почты и учётных программ — A4 Office. Вложение или файл из 1С открывается в редакторе на компьютере и возвращается обратно. A4 Office на компьютере.
- Внутри вашего продукта. Те же редакторы, встроенные в ваше приложение, — для партнёров: мобильный SDK; напишите нам.
Скачать
| Файл | Размер | Что это |
|---|---|---|
a4office-2026.4.5.jar | 228 838 905 байт | библиотека с ядрами пяти платформ · sha1 · md5 |
a4office-2026.4.5.pom | 3 832 байт | описание и зависимости · sha1 · md5 |
a4office-2026.4.5-sources.jar | 228 813 658 байт | исходники · sha1 · md5 |
a4office-2026.4.5-javadoc.jar | 4 240 074 байт | документация Javadoc · sha1 · md5 |
maven-metadata.xml | 400 байт | список версий · sha1 · md5 |
SHA256SUMS | 1 546 байт | контрольные суммы |
Контрольные суммы
c0d699dd9c1e710f502acdf314f46b67cb4ad85959107f141bf4f1b7fa04fa78 ru/a4office/a4office/2026.4.5/a4office-2026.4.5.jar
30d286a873398a13062ed67e28a7a2ca9a3f31044eea1070e94015aea0223a88 ru/a4office/a4office/2026.4.5/a4office-2026.4.5-javadoc.jar
d39cad7957ed102ff6ae61f9469e103737330428508baeb120ba56a214820224 ru/a4office/a4office/2026.4.5/a4office-2026.4.5.pom
f2758e0b636c59da4dc078ec735a36b9fa238826076aa1dbde63b31da69fce2a ru/a4office/a4office/2026.4.5/a4office-2026.4.5-sources.jar
0f1c22d77a610e6c326b086ae3ff68a6452a2114925c0f0b04dd4bda39fa03c5 ru/a4office/a4office/maven-metadata.xml
Проверка после скачивания (из папки, где лежат файлы с теми же путями):
shasum -a 256 -c SHA256SUMS