1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
|
1 | |
Работа с атрибутами xlsx-файлов07.01.2017, 17:21. Показов 2155. Ответов 27
Метки нет (Все метки)
Нужно изменить атрибут "Автор", который видно в изображении, приложенном к посту.
Я нашёл класс SummaryInformation. Уже было обрадовался. На первый взгляд, там есть всё, что только может пригодится. Но рано я радовался. Оказалось, что он работает только с HSSF. По крайне мере, я сделал такой вывод для себя. Т.к. на экземпляре XSSF файла метод getSummaryInformation() вызвать не получилось. Это вообще возможно на Java реализовать?
0
|
07.01.2017, 17:21 | |
Ответы с готовыми решениями:
27
Работа с данными файлов Excel .xlsx. Работа с данными файлов Excel .xlsx. Чтение и вывод данных с использованием модуля openpyxl Вывод списка файлов с атрибутами Ошибка при работе с атрибутами файлов |
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
07.01.2017, 19:38 | 2 |
Погугли poixmlproperties
0
|
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
|||||||||||
07.01.2017, 21:21 [ТС] | 3 | ||||||||||
Оно то, вроде как, то что нужно. Но, что-то не вышло передать дату модификации в метод. Вот чт имеется:
Выдаётся такая ошибка: Кликните здесь для просмотра всего текста
Error27, 21) java: no suitable method found for setLastPrinted(java.util.Date)
method org.apache.poi.POIXMLProperties.CoreProperties.setLastPrinted(org.apache.poi.ope nxml4j.util.Nullable<java.util.Date>) is not applicable (argument mismatch; java.util.Date cannot be converted to org.apache.poi.openxml4j.util.Nullable<java.util.Date>) method org.apache.poi.POIXMLProperties.CoreProperties.setLastPrinted(java.lang.String) is not applicable (argument mismatch; java.util.Date cannot be converted to java.lang.String)
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
07.01.2017, 22:02 | 4 |
Оно тебе вроде человеческим языком пишет что аргумент не того типа
0
|
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
|
07.01.2017, 22:08 [ТС] | 5 |
То что он пишет я понимаю прекрасно, в плане перевода. Но не логично. Ведь на входе тип Nullable<java.util.Date>
Это рзве не date? Если нет, то просьба поправить меня. Уже запарился. Опыта в этом не много. Я вижу, что похоже на arrayList параметр, но.. вроде бы и нет. В общем, просьба направить меня в нужную сторону...
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
07.01.2017, 22:25 | 6 |
Nullable и Date как бы разные типы, да.
0
|
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
|
07.01.2017, 23:27 [ТС] | 7 |
Можно пояснить как тогда в этом случае передать дату? Я не совсем понимаю, что передавать... Не встречался с подобным типом ещё.
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
08.01.2017, 00:59 | 8 |
new Nullable<Date>(new Date()) ?
0
|
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
|
08.01.2017, 01:13 [ТС] | 9 |
И как его получить такой тип? Я в упор не нагугливаю толком ничего путного на эту тему. Есть что-то подобное, но конкретно ничего.
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
08.01.2017, 01:51 | 10 |
Что значит "как получить"?
0
|
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
||||||
08.01.2017, 02:35 [ТС] | 11 | |||||
Есть, по сути, разные типы. Первый тип это апачевский Nullable<E>, а второй обычный Date().
Я думаю, как мне всё это совместить. Создаю Nullable<E>, а дальше у меня имеется дата уже обычного типа Date(). Мне нужно дату эту передать в экземпляр Nullable<E>. Как это сделать не представляю. Вот что имеется у меня, на данный момент:
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
08.01.2017, 04:01 | 12 |
1
|
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
||||||
08.01.2017, 12:29 [ТС] | 13 | |||||
По сути, с типом Nullable теперь понятно. Передаю я его с заданным значением, но ничего не выходит. "Дата последнего вывода на печать" не изменяется. Хотя, я вывожу значения атрибута на консоль и в консоли вижу, что это значения типа изменяется. Но, по факту, ничего не происходит, что видно, если заглянуть в свойства файла. На видео я подробно и кратко показал, что происходит:
Вот код, который должен модифицировать "Дату последнего вывода на печать":
Код
before change Document Creator :null after change Document Creator :Wed Jun 12 00:00:00 MSD 2002
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
08.01.2017, 12:45 | 14 |
Если ты делаешь getProperties, чтобы получить проепрти из файла, то, возможно, надо сделать setProperties, чтобы записать новые проперти в файл?
0
|
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
||||||
08.01.2017, 13:05 [ТС] | 15 | |||||
Так сделал же:
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
08.01.2017, 13:19 | 16 |
Ты поле в объекте меняешь. В файл кто это будет за тебя писать?
0
|
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
|
08.01.2017, 13:39 [ТС] | 17 |
У POIXMLDocument'а такого метода нет. У него вообще сеттеров нет. Как же это сделать тогда?
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
08.01.2017, 13:54 | 18 |
тебе 5 лет чтоли? Все ответы гуглятся за минуту. Сам даешь ссылку на доки, в которых есть метод write.
0
|
1 / 1 / 0
Регистрация: 25.08.2014
Сообщений: 104
|
|||||||||||
08.01.2017, 15:00 [ТС] | 19 | ||||||||||
Неа. Не 5)) Но и опыта тоже не 5. По началу сложновато ориентироватся в дебрях иерархии классов..
Всё-равно, что-то не то. Я добавил строки:
Кликните здесь для просмотра всего текста
"C:\Program Files\Java\jdk1.8.0_112\bin\java" -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files\JetBrains\IntelliJ IDEA 2016.2.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_112\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\access-bridge.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_112\jre\lib\rt.jar;C:\Users\hoz\IdeaProjects\MovedSelectedFi les\out\production\MovedSelectedFiles;C:\Users\hoz\IdeaProjects\MovedSelectedFil es\lib\poi-3.13.jar;C:\Users\hoz\IdeaProjects\MovedSelectedFiles\lib\commons-codec-1.9.jar;C:\Users\hoz\IdeaProjects\MovedSelectedFiles\lib\poi-ooxml-3.13.jar;C:\Users\hoz\IdeaProjects\MovedSelectedFiles\lib\poi-ooxml-schemas-3.13.jar;C:\Users\hoz\IdeaProjects\MovedSelectedFiles\lib\xmlbeans-2.6.0.jar;C:\Users\hoz\IdeaProjects\MovedSelectedFiles\lib\stax-api-1.0.1.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2016.2.4\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain Main
Exception in thread "main" java.io.EOFException: Unexpected end of ZLIB input stream at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:240) at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158) at java.util.zip.ZipInputStream.read(ZipInputStream.java:194) at org.apache.poi.openxml4j.util.ZipSecureFile$ThresholdInputStream.read(ZipSecureF ile.java:168) at java.io.FilterInputStream.read(FilterInputStream.java:107) at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource$FakeZipEntry.<init>(Z ipInputStreamZipEntrySource.java:130) at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource.<init>(ZipInputStream ZipEntrySource.java:57) at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:91) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:273) at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:273) at xcell.XLSXManipulation.readXLSXocument(XLSXManipulation.java:21) at Main.main(Main.java:17) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav a:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Process finished with exit code 1 На данный момент, код целиком выглядит так:
Оно вроде как что-то делает, но пишет всё-равно, что: Код
Fail to save: an error occurs while saving the package : null
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
08.01.2017, 16:53 | 20 |
попробуй java обнови
0
|
08.01.2017, 16:53 | |
08.01.2017, 16:53 | |
Помогаю со студенческими работами здесь
20
Поиск и вывод имен файлов с определенными атрибутами в заданном каталоге Работа с атрибутами файла в Windows Использование типов DataContract с другими атрибутами. Прокси класс не генерирует DataContract с атрибутами Парсинг больших .xlsx файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |