Java редактирование word документа
Для языка Java (как, впрочем, и для любого другого языка программирования) всё еще не придумали более простого и действенного способа генерации документов docx, чем библиотека Apache POI. В конце нулевых появился сей высокоуровнеый API, позволящий говорить с формируемым документом не на языке разметки XML, а с помощью удобных полей и выводов.
Судя по моим Google-запросам на протяжении более чем года сообщество пользователей этой библиотеки продержалось года этак до 2012, в то время как новые версии библиотеки всё еще появляются на главной странице проекта. Не на все вопросы, касающиеся формирования самого примитивного документа, есть ответы в документации или stackoverflow, не говоря уже о текстах на русском языке. Постараемся компенсировать этот недостаток данных для тех, кому это может понадобиться.
Основные классы API
XWPFDocument — целостное представление Word документа. В нём не только содержится xml-код, интерпретируемый редакторами (Word, LibreOffice), но также содержатся и методы для определения метаданных отображения — набора стилей, сносок и т.п. В этой статье поговорим о первом, так как работа с метаданными не так явно задокументирована, к тому же многие редакторы успешно справляются с отображением документа и без подсказок.
Итак, предположим, у вас на руках есть (ненужный) файл docx. Преобразуем его в файл zip (осторожно, обратное преобразование путем переименования zip -> docx может сделать файл недоступным для вашего редактора(!)), в получившемся архиве откроем папку word, а в ней — файл document.xml. Перед нами xml-представление word-файла, которое также можно было бы получить через Apache POI, с меньшими трудностями.
Для того, чтобы поближе познакомиться с содержимым документа, придется вооружиться еще двумя классами API: XWPFParagraph и XWPFTable.
XWPFParagraph — как следует из названия, представляет собой параграф документа. Расположен он может быть как внутри XWPFDocument,
так и внутри таблицы (если точнее — внутри ячейки таблицы, вложенной в ряд таблицы, вложенного непосредственно в таблицу).
Параграф предоставляет изрядный набор информации для вёрстки и размещения текста. Официальная документация на этот счёт достаточно красноречива: отступы слева и справа, сверху и снизу, в том числе и между строками, добавление гиперссылок и границ для параграфа.
XWPFTable — класс, олицетворяющий таблицу. Также как и в XWPFParagraph, XWPFTable можно добавлять к самому документу и к ячейке таблицы (создавая, тем самым, таблицу внутри таблицы). Семантика в таком случае чуточку усложняется.
XWPFRun — набор данных о выводе текста внутри параграфа. Находится может только внутри параграфа, создается через вызов метода параграфа-родителя:
Из нескольких «ранов», как я предпочитаю их называть, и состоит целый параграф текста в Word. Каждый «ран» имеет свою настройку шрифта, его цвета и размера, а также стилизации. Через добавление различных «ранов», подчиняющихся разметке параграфа, можно выводить тексты с совершенно разной стилизацией.
Как становится видно из обзора классов, перенос, скажем, css-стиля в документ будет связан с дополнительной сложностью: часть свойств необходимо будет применить к параграфу docx, часть — к объекту класса XWPFRun.
Итак, библиотека легла в External Libraries/jar лежит под рукой, пора творить.
Создадим документ, добавим таблицу 2х2 и параграф.
Заполним параграф, добавив ран для вывода текста. После перевода строки стилизация параграфа будет потеряна, и в Word новый параграф будет выведен без красной строки.
Теперь займёмся заполнением таблицы. Мы можем обращаться не только к уже созданным элементам, но и вызвать у сформированной таблицы метод для добавления рядов или колонок.
Опускаемся глубже, на уровень ряда таблицы. Именно в таком порядке предстаёт разбор таблицы в Apache POI — сначала ряды, потом клетки. Напрямую из таблицы можно получить лишь количество колонок в таблице:
Оказавшись в ячейке двигаться глубже уже некуда, поэтому можно снова вызвать наш дуболомный метод по заполнению параграфа, предварительно создав его в таблице.
Итак, можно легко уловить суть структуры документа в Word: вкладывай одно в другое и предоставляй доступ (в том числе и к созданию новых экземпляров). К сожалению, далеко не всегда есть возможность получить последний элемент во вложенной коллекции. Чаще всего приходится пользоваться такими вот ухищрениями:
Хорошо, с содержимым таблицы разобрались. Что если нам нужно явно уточнить ширину таблицы, а не оставлять её для волной интерпретации редактора?
Для некоторых на первый взгляд числовых значений, например, ширины таблицы, в Apache POI существуют целые классы.
С помощью типа укажем, какая именно ширина нам нужна: auto, pct или dxa. В первом случае таблицы займёт всю предоставленную ей ширину, во втором — процент от всей ширины, указанный позже методом setW. В нашем же случае вмешиватеся специальная единица измерения — dxa, равная 1/20 точки.
Классы, подобные CTTblWidth, используются повсеместно: для определения ширины страницы (PgSize), ширины ячейки и др.
Единцы измерения в Apache POI
В хорошем документе всё выверенно и расчерчено идеально, вплоть до самого пикселя. Возможно, в теории можно сделать всё средствами Apache POI и без углубления в тему единиц измерения, но лучше уделить им внимание сразу, чтобы избежать недопониманий в духе «почему это схлопнулось» и «когда переместил картинку в word на один сантиметр».
О поддержке сантиметров и остальной метрической системы тут остается только мечтать. Это резонно (каждый шрифт уникален, у каждого редактора своя специфика), но дико неудобно. Придется прибегнуть ко множеству конвертаций, если вы хотите задавать отступы (ведь именно в сантиметрах мы привыкли видеть их в word) в сантиметрах. Итак, указав тип измерения dxa для некоторой ширины, как описно в параграфе выше, мы получаем в распоряжение некоторое точное значение, но абсолютно не представляем как им воспользоваться. Для перевода в сантиметры на stackoverflow есть формула. Для всего остального существует класс Units. В нем определены как методы для перевода единиц измерения, так и сами соотношения между значениями.
Запись готового документа
Для записи в конечный файл есть удобный метод XWPFDocument — write. На вход принимается поток, в который пойдёт запись.
Если готовый документ нужно куда-то передать можно подать в качестве аргумента не File-, а ByteArrayOutputStream.
Информация об элементе отображения в формате xml
Имея документ, отображающийся корректно в определенном редакторе, полезно было бы узнать как именно представлен необходимый параграф или другой элемент. Для этого определенны специальные методы, возвращающие объекты классов пакета org.openxmlformats.schemas.wordprocessingml.x2006.main. Из названия (wordprocessingml) видно, что данный набор классов используется только для работы с документами word. Например, для xlsx документов есть пакет spreadsheetml, некоторые классы которого очень и очень похожи на классы wordprocessingml, поэтому конвертация между форматами достаточно затруднена.
Так, пустой параграф будет иметь скромное представление
Пустая таблица покажет больше интересного.
Что здесь интересного? Свойства tblPr — всевозможные свойства таблицы. Внутри уже описанная ширина таблицы (установлена 0, но свойство «auto» все равно выведет таблицу в приемлимой, автоматической ширине). Также tblBorders — набор информации о границах таблицы. Далее идёт явно выраженное представление внутренностей таблицы. tr — ряд таблицы, внутри вложенны tc. Внутри tc оказался бы набор вложенный параграфов, если бы мы добавили хотя бы один.
Попробуем пополнить параграф информацией и посмотреть что из этого получится.
Здесь ситуация ровно такая же: объект с мета-информацией (в него добавлена информация об отступе красной строки, который мы вложили в коде), а так же само содержимое: там размещается список «ранов». В первый и единственный мы добавили текст и информацию о шрифте. Эта информация также разделилась внутри «рана» — информация о шрифте попала в rPr, сам текст — в элемент t.
Вместо вывода
Apache POI предоставляет удобный, и, что не менее важно, бесплатный API для работы с документами. В нем непросто добиться единого отображения во всех редакторах (Office Online и LibreOffice обязательно будут выглядеть иначе), есть множество неудобств с единицами измерения, а так же непонятно где и какие свойства в элементах должны находиться. Тем не менее, работа с этими свойствами подчинена логике, а возможность подглядеть в xml не нарушая эту логику делает разработку гораздо более удобной.
В этой статье показано, как Apache POI используется для чтения, анализа и записи документа Microsoft Word.
Автор оригинала: Nikita Masand.
В этой статье мы научимся читать и писать Microsoft Word с помощью библиотеки POI Apache .
- Apache POI – HWPF и XWPF
- Зависимости POI Apache
- Создайте документ word
- Работа с абзацами, шрифтами и страницей перерывы
- Верхний и нижний колонтитулы документа
- Добавить изображение
- Создайте таблицу
- Прочитайте и проанализируйте документ, абзац и таблицу
- Обновить документ
P.S Протестировано с Apache POI 4.1.2 и Java 8
1. Apache POI – HWPF и XWPF
Apache POI предоставляет API Java для работы с документами Microsoft. Мы рассмотрим варианты использования, включающие абзацы, шрифты, верхние и нижние колонтитулы, таблицы, изображения, запись, чтение, анализ и обновление документа. Прежде чем изучить варианты использования, давайте рассмотрим основные концепции, связанные с библиотекой POI Apache.
1.1 HWPF (ужасный формат текстового процессора) Эти API-интерфейсы предназначены для более старых форматов файлов Word 6 и Word 95, .doc документы.
1.2 XWPF (формат текстового процессора XML) Эти API предназначены для новых документов Word 2007, .docx .
Документ XWPFDocument | Он предоставляет API-интерфейсы высокого уровня для создания / редактирования файлов .docx word |
xwpfпараграф | Он используется для работы с абзацами |
XWPFRun | Он определяет область текста с общим набором свойств. Он также используется для редактирования свойств шрифта |
XWPFTable | Он используется для описания содержимого компонента таблицы, присутствующего в файле word |
XWPFTableRow | Он определяет строки, присутствующие в компоненте таблицы |
Xwpfвордэкстрактор | Он используется для извлечения текста из файла word |
P.S Эта статья будет посвящена последним XWPF API-интерфейсы, работа с .docx документы.
2. Зависимости POI Apache
Нам нужен только poi-ooxml для работы с Microsoft word.
3. Создайте документ word
В этом примере показано, как создать файл Microsoft Word .docx . Мы используем XWPFParagraph для создания абзацев и XWPFRun для создания текста.
4. Работа с абзацами, шрифтами и разрывы страниц
Мы можем использовать XWPFRun для настройки свойств стиля шрифта. Он содержит методы изменения свойств шрифта, таких как цвет, размер шрифта, курсив, жирный шрифт, заглавные буквы, тиснение и многое другое.
Мы создаем четыре абзаца и устанавливаем различные свойства шрифта, разрывы строк и разрывы страниц для каждого из них.
5. Верхний и нижний колонтитулы документа
В этом примере создается верхний и нижний колонтитулы документа для всех страниц.
6. Добавить изображение
В этом примере в документ добавляется изображение.
7. Создайте таблицу
В этом примере мы рассмотрим, как мы можем вставить таблицу в файл документа Word. Мы будем использовать компонент XWPFTable для создания и инициализации элемента таблицы.
В этом примере вставляется таблица, содержащая 3 строки и 3 столбца.
P.S Предупреждение для OpenOffice 4.1.7, API-интерфейсы таблиц неправильно отформатировали таблицу.
8. Прочитайте и проанализируйте документ, абзац и таблицу.
В этом примере будет показано, как мы можем использовать POI Apache для извлечения и считывания текста из документов.
8.1 Мы можем извлечь весь текст из документа с помощью XWPFWordExtractor . Файл simple.docx генерируется из примера 4. Работа с абзацами, шрифтами и разрывами страниц .
8.2 В этом примере мы используем doc.getparagraphs() для списка абзацев документа. Как только мы получим список, мы сможем повторить отдельные элементы абзаца и получить текст.
8.3 Файл table.docx генерируется из примера 7. Создайте таблицу . Нам нужно получить список всех элементов в файле, а затем выполнить итерацию по нему, чтобы проверить наличие компонента ТАБЛИЦА . Как только мы найдем компонент ТАБЛИЦА , мы можем выполнить итерацию по нему, чтобы извлечь строки таблицы, и, наконец, выполнить итерацию по строкам, чтобы извлечь значения таблицы.
9 . Обновить документ
В этом примере мы будем использовать предварительно заполненный файл шаблона template.docx . Файл шаблона содержит следующий текст Привет $, Поздравляю, вы учитесь чему-то новому! . И мы заменим строку $ предопределенным вводом и создадим новый файл output.docx с обновленным содержимым.
Дальнейшее чтение Для получения дополнительных примеров, пожалуйста, обратитесь к этому официальному Примеры Apache POI XWPF
Пару месяцев назад мне нужно было создать динамический документ Word с несколькими таблицами и абзацами. В прошлом я использовал POI для этого, но мне было трудно это использовать, и он не очень хорошо работает при создании более сложных документов. Так что для этого проекта, после некоторых поисков, я решил использовать docx4j . Docx4j, в соответствии с их сайтом является:
«Docx4j – это библиотека Java для создания и управления файлами Microsoft Open XML (Word docx, Powerpoint pptx и Excel xlsx).
Это похоже на Microsoft OpenXML SDK, но для Java. »
В этой статье я покажу вам пару примеров, которые вы можете использовать для создания контента для текстовых документов. Более конкретно мы рассмотрим следующие два примера:
- Загрузите шаблон документа Word, чтобы добавить содержимое и сохранить как новый документ.
- Добавить абзацы в этот шаблон документа
- Добавить таблицы в этот шаблон документа
Общий подход заключается в том, чтобы сначала создать документ Word, который содержит макет и основные стили вашего окончательного документа. В этом документе вам необходимо добавить заполнители (простые строки), которые мы будем использовать для поиска и замены реальным контентом.
Например, очень простой шаблон выглядит так:
В этой статье мы покажем вам, как вы можете заполнить это, чтобы получить это:
Загрузите шаблон документа Word, чтобы добавить содержимое и сохранить как новый документ.
Обо всем по порядку. Давайте создадим простой текстовый документ, который мы можем использовать в качестве шаблона. Для этого просто откройте Word, создайте новый документ и сохраните его как template.docx. Это слово шаблон, который мы будем использовать для добавления контента. Первое, что нам нужно сделать, это загрузить этот документ с помощью docx4j. Вы можете сделать это с помощью следующего фрагмента кода Java:
private WordprocessingMLPackage getTemplate(String name) throws Docx4JException, FileNotFoundException
WordprocessingMLPackage template = WordprocessingMLPackage.load( new FileInputStream( new File(name)));
Это вернет объект Java, представляющий полный (на данный момент) пустой документ. Теперь мы можем использовать API Docx4J для добавления, удаления и изменения содержимого в этом текстовом документе. Docx4J имеет несколько вспомогательных классов, которые вы можете использовать для просмотра этого документа. Я сам написал пару помощников, которые позволяют легко найти конкретные заполнители и заменить их реальным контентом. Давайте посмотрим на одного из них. Эта операция является оберткой вокруг пары операций JAXB, которая позволяет вам искать через определенный элемент и все его дочерние элементы для определенного класса. Например, вы можете использовать это, чтобы получить все таблицы в документе, все строки в таблице и многое другое.
Ничего сложного, но действительно полезно. Давайте посмотрим, как мы можем использовать эту операцию. В этом примере мы просто заменим простой текстовый заполнитель другим значением. Это, например, то, что вы будете использовать для динамической установки заголовка документа. Сначала добавьте пользовательский заполнитель в созданный вами шаблон слова. Я буду использовать SJ_EX1 для этого. Мы заменим это значение на наше имя. Основные текстовые элементы в docx4j представлены классом org.docx4j.wml.Text. Чтобы заменить этот простой заполнитель, все что нам нужно сделать, это вызвать этот метод:
private void replacePlaceholder(WordprocessingMLPackage template, String name, String placeholder )
Это будет искать все элементы текста в документе, и те, которые соответствуют, заменяются на значение, которое мы указываем. Теперь все, что нам нужно сделать, это записать документ обратно в файл.
private void writeDocxToStream(WordprocessingMLPackage template, String target) throws IOException, Docx4JException
Не так сложно, как вы можете видеть.
С помощью этой настройки мы также можем добавить более сложный контент в наши текстовые документы. Самый простой способ определить, как добавить конкретный контент, – просмотреть исходный код XML документа word. Это скажет вам, какие оболочки нужны и как Word маршаллизирует XML. В следующем примере мы рассмотрим, как добавить полный абзац.
Добавить абзацы в этот шаблон документа
Вы можете спросить, зачем нам нужно добавлять абзацы? Мы уже можем добавить текст, и не является ли абзац просто большим фрагментом текста? Ну да и нет. Абзац действительно выглядит как большой кусок текста, но вам нужно принять во внимание разрывы строк. Если вы добавите элемент «Текст», как мы делали ранее, и добавите в текст разрывы строк, они не будут отображаться. Когда вы хотите разрывы строк, вам нужно создать новый абзац. К счастью, с Docx4j это также очень легко сделать.
Мы сделаем это, выполнив следующие шаги:
- Найти абзац для замены из шаблона
- Разбить входной текст на отдельные строки
- Для каждой строки создайте новый абзац на основе абзаца из шаблона
- Удалить оригинальный абзац
Не должно быть слишком сложно с вспомогательными методами, которые у нас уже есть.
private void replaceParagraph(String placeholder, String textToAdd, WordprocessingMLPackage template, ContentAccessor addTo)
В этом методе мы заменяем содержимое абзаца предоставленным текстом, а затем добавляем новые абзацы к аргументу, указанному в addTo.
Если вы запустите это с большим количеством контента в вашем шаблоне слов, вы заметите, что абзацы появятся внизу вашего документа. Причина в том, что абзацы добавляются обратно в основной документ. Если вы хотите, чтобы ваши абзацы добавлялись в определенное место в вашем документе (что обычно требуется), вы можете поместить их в таблицу без полей 1 × 1. Эта таблица считается родительской для абзаца, и в нее можно добавить новые абзацы.
Добавить таблицы в этот шаблон документа
Последний пример, который я хотел бы показать, – это как добавить таблицы в шаблон слова. На самом деле, лучшим описанием было бы то, как вы можете заполнить предопределенные таблицы в вашем шаблоне слов. Как и в случае с простым текстом и абзацами, мы заменим заполнители. Для этого примера добавьте простую таблицу в ваш текстовый документ (который вы можете стилизовать по своему усмотрению). К этой таблице добавьте 1 фиктивную строку, которая служит шаблоном для контента. В коде мы будем искать эту строку, копировать ее и заменять содержимое новыми строками из кода Java следующим образом:
- найдите таблицу, которая содержит одно из наших ключевых слов
- скопировать строку, которая служит шаблоном строки
- для каждой строки данных добавьте строку в таблицу на основе шаблона строки
- удалить исходную строку шаблона
Такой же подход, как мы показали и для абзацев. Сначала давайте посмотрим, как мы предоставим данные для замены. Для этого примера я просто предоставляю набор хеш-карт, которые содержат имя замещающего элемента и значение для его замены. Я также предоставляю токены для замены, которые можно найти в строке таблицы.
Редактировать документ Word.docx с помощью Java POI
Предварительное понимание
Здесь только объясняет файл Word с Docx Suffix, файл DOC, кажется, использует другой API, не очень хорошо.
Во-первых, вам нужно знать режим хранения Word.docx перед использованием POI. Щелкните правой кнопкой мыши Word Document, мы можем найти параметры в таких параметрах, как открытые пакеты сжатия. После декомпрессии формат папки выглядит следующим образом:
В них нам нужно обратить внимание на основную папку с медиа-папкой, которая ниже всех изображений в документе Word; и Document.xml под папками слова XML приводит к общей ситуации, включая текст, формат, изображения в Цитата документа слова и т. Д.
Использовать POI.
Если вы используете Maven, вы можете добавить следующую цитату:
Если вам нужно обрабатывать математические формулы в Word, вам нужно добавить:
document
Первый - получить содержание документа, XWPFDocument document = new XWPFDocument(new FileInputStream(filePath));
Далее общий формат документа заявлен.
В это время мы получаем документ в значительной степени, в папке «Слово» должен быть файл Document.xml, и мы также будем использовать метод XML для обработки документа Word. Используйте текстовый редактор, чтобы открыть Document.xml, этот файл смущен, я использую плагин Sublime для повторного использования.
Из файла document.xml вы можете увидеть, что корневой узел W: документ крепко W: Body, а узел корпуса включает в себя всю информацию файла. Тело - три узла:
1. : Этот узел определяет общую информацию о документе WORD, включая ссылку на кадры заголовка, вы можете найти определение кадры заголовка под папкой разбного слова. Кроме того, размер страницы также включен. Эта часть мне не нужно получать его во время использования, а конкретный контент не очень понимает. Вы можете использовать метод документа для использования метода документа в копировании (если вам не нужно получать содержимое формата, следующий абзац, таблицу, таблицу, узел внутри, раздел формата напрямую использует исходные настройки);
2. : Пункт, соответствующий XWPFPARGRAMP. Есть три узла в пунктах.
1. Аналогичный на SECTPR, раздел формата, часть формата следующей части не повторяется, в основном каждый узел имеет атрибут, соответствующий классу в POI
2. RUN метка, соответствующий XWPFRUN, является частью того же содержимого в формате в пункте, в основном, включая часть атрибута, раздел изображения и раздел текста. То есть, если существует множество форматов в множестве форматов или изображения, будут несколько тегов запуска под узлом абзаца.
-------- 1. Текстовый раздел: под текстовым тегом, настройки и приобретение простой, есть прямой метод в соответствующем объекте
-------- 2. Часть изображения: Теги, соответствующие XWPFPICTREDURETATA. Следует отметить, что каждая картинка в словом соответствует одному идентификатору:
Найдите эту часть содержимого, где мы можем получить идентификатор изображения в RID15, мы можем пройти напрямую XWPFPictureData picture = document.getPictureDataByID(id); Чтобы получить указанную картинку, получите метод идентификатора до конца статьи. Эта картина имеет метод GetBytes, и вы увидите вас, когда вы хотите сделать это. = Кроме того, может быть еще один формат для сохранения изображений, но я не столкнулся с этой ситуацией во время использования, поэтому она не описана.
3. Раздел формулы, вам необходимо добавить зависимость статьи и соответствовать CTomath. Если вам не нужно получить формулу, вы можете пропустить. Если вам нужно использовать формулу, вполне вероятно, что ему необходимо передать его в формат LATEX. Проблема, с которой я встречался во время использования кафедры, заключается в том, что MAC отдела не может прочитать формулу часть слова, и формулы игнорируются при использовании формата трансфера Pandoc, а под Windows можно просмотреть в Windows. Наконец, было обнаружено, что находится под прогонкой на этикетке, помещенной в эту часть этикетки, которая вызвала эти две проблемы. Поэтому я попробовал очень просто, пройдил элементы в лейбл запуска, столкнулся с формулой, удалил формулы в теге запуска, получил родительский абзац, добавленный на тот же уровень, что и метка запуска. Обходная часть такая же, как и идентификационный метод получения изображений, сказал в конце.
3. Форма, соответствующая XWPFTable. В дополнение к атрибуту формата, каждая строка следующая является столбцом, ячейкой, мы можем обнаружить, что каждая ячейка доступна при чтении документа Word, поскольку ячейка находится под использованию абзацев для хранения, так Я знаю выше, и форма проста.
Обход
Затем говорят метод прохождения. Если вам нужен только абзац, изображение или таблица, то есть прямой метод под XWPFDocument; если спрос является относительно сложным, используйте XWPFDocument: Getbodyements, чтобы получить все элементы. Формат суда через экземпляр. Для конкретных, вы можете пройти:
Для этого вышеперечисленное является частью кода, который я копирую вкладку «Запустить» и удалите абзац внутри прогона, который можно кратко упоминаться. Тип класса, когда формула находится внутри прогона, это XMLANYTYPEIMPL. cursor.selectPath("./*"); Это значит получить все дочерние элементы.
Затем документация кратко рассказала об этом, а конкретный метод в POI все еще нуждается в каждом исследовании. Я желаю всем вам счастливого нового года!
Реализовать текстовый редактор с Java: Создание, просмотр, редактирование файлов, скрап, копировать, вставить, сохранить, сохранить как, характер статистики, автоматическое обертывание
Наблюдение различных текстовых редакторов Java в Интернете, он также послал, это очень просто, и комментарий чрезвычайно подробно. Для всех, чтобы узнать из ссылки, добро пожаловать в обмен.
Реализовать текстовый редактор с Java: Создание, просмотр, редактирование файлов, скрап, копировать, вставить, сохранить и сохранить; статистика
Во-первых, среда разработки
Среда разработки: Windows 10 операционной системы; JDK 13.0.2
Операционная среда: JRE 13.0.2
Средства разработки: Notepad ++
Во-вторых, программный модуль Описание функции
В столбце меню составителя текста завершен этот проект имеет четыре варианты:документ、редактировать、Формат、помощь。
(1) документ
В раскрывающемся меню Файл включает в себя «новые, открытые, сохраненные, сохраняемые выходы» 5 функций.
- Новый: Создать новый текст.
- Open: Открыть указанный текстовый файл.
- Сохранить: текст магазина модификация содержания.
- Сохранить как: Хранение файлов в других местах.
- Выход: Закройте программу.
(2) Редактирование
Редактирование выпадающего меню включает в себя 3 функции «вырезать, копировать, вставить».
- Вырезать (можно использовать ярлык Ctrl + X)
- Копировать (вы можете использовать ярлык Ctrl + C)
- Вставить (вы можете использовать ярлык Ctrl + V)
(3) статистика
Существует вариант «Статистика» в меню Статистических падений.
- Статистика: Автоматическая статистика ввода символов в символы, счета за исключением случаев.
(3) Формат:
В раскрывающемся меню формата имеет функцию «Автоматическая Панч».
- Автоматическая Панч: Проверка автоматически завернуть.
(4) Помощь
Меню помощи включает в себя две функции «Справка, О».
- Помощь: Как представить, как используется текстовый редактор.
- О: Разработка редактора соответствующей информации.
В-третьих, список ключей API Java
Основная рама:
помощь:
о:
В-четвертых, запустить результат
Интеллектуальная рекомендация
Java.nio.Buffer flip () метод jdk Ошибка перевода на китайский язык
Когда я сегодня читал «Идеи программирования на Java», я столкнулся с методом java.nio.Buffer flip (). Дело в том, что «[color = red] переворачивает этот буфер. Сначала установите ог.
Предварительное понимание регулярных выражений Python (4)
Сегодня я продолжу делиться базовыми знаниями о регулярных выражениях Python. В основном я представляю использование специального символа "<>". Ниже приведено конкретное руководство. .
Все белое Введение Сверток Neural Network (CNN)
Использование внутреннего соединения, левого соединения, правого соединения в оракуле
Левое-правое соединение фактически говорит, какая таблица является результатом нашего совместного запроса ~ 1. Взаимосвязь проста select A.*, B.* from A,B where A.id = B.id select A.*, B.* from.
[Код очень подробный] POJ 2492 A Bug's Life (и проверьте коллекцию)
1. Описание заголовка 2. Инструкции по анализу алгоритмов и руководство по написанию кода. Похожие темы:POJ 1182 Решение проблемы пищевой цепи Наблюдается m насекомых и n вязок. Насекомые u и v могут .
Читайте также: