Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
Делаю чтение xlsx файлов из программы написанной на perl, через модуль spreadsheet::xlsx. Но при чтении файлов свыше 100мб начинаются проблемы. программа сьедает всю доступную оперативную память и начинает активно использовать своп. на компьютере установлено 16Гб оперативной памяти и 20 гб swap. на компьютере стоит линукс. может кто то сталкивался с такой проблемой. может кто то посоветует другой модуль. так как последная версия этого модуля 0.13 и датирована 2010 годом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2014, 15:19 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
Другой модуль для парсинга xlsx целиком не подскажу, не в теме. Но если ничего не удастся найти, тогда можно попробовать распаковать файл (xlsx - это zip-архив с несколькими файлами XML) и попытаться обработать каждый его компонент в отдельности (или только нужный). Вроде было даже что-то для парсинга XML без загрузки его целиком в память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2014, 15:39 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
vkle, не знаю как там всё устроено, но почему то, ячейки с английскими символами там есть, а с кириллицей нет. тем более это не очень удачный вариант когда сотню файлов обработать надо. вообщем, хотелось бы что б кто то опытом поделился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2014, 16:15 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
evgen25, Spreadsheet::ParseXLSX This module internally uses XML::Twig, which makes it potentially subject to Bug #71636 for XML-Twig: Segfault with medium-sized document on perl versions 5.14 and below (the underlying bug with perl weak references was fixed in perl 5.15.5). The larger and more complex the spreadsheet, the more likely to be affected, but the actual size at which it segfaults is platform dependent. On a 64-bit perl with 7.6gb memory, it was seen on spreadsheets about 300mb and above. This software is Copyright (c) 2014 by Jesse Luehrs. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2014, 21:30 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
volodin661, это значит что мне перл надо обновить не ниже версии 5.15.5? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2014, 12:04 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
1. попробуй java-технологии вот пример на scala с библиотекой POI, чтобы особо не мучится, брось библиотеку poi в lib-каталог scala или java ничего компилить не надо, обычный скриптовой язык. 2. либо предложенный вариант с распаковкой zip-архива xlsx и дальнейшей работой в виде xml и xpath примеры гуглятся. 3. прим., если ты в линуксе, лучше не апгрейдить perl, а инсталлировать новый локально в /usr/local/bin package me.eax.poi_example import java.io._ import org.apache.poi.ss.util._ import org.apache.poi.xssf.usermodel._ object ReportTemplateWriter extends App { // Данные для построения отчета val months = Array("октябрь 2012", "ноябрь 2012", "декабрь 2012", "январь 2013", "февраль 2013", "март 2013") val data = Map( (1,"RU-CENTER") -> Array(83318, 80521, 83048, 73638, 82014, 93982), (2,"REGRU") -> Array(35621, 37013, 36515, 41595, 45042, 49101), (3,"R01") -> Array(44155, 44356, 43199, 39629, 42754, 48528), (4,"REGTIME") -> Array(19999, 18587, 18630, 18627, 19886, 20496) ) // Открываем шаблон отчета val wb = new XSSFWorkbook( getClass.getResourceAsStream("/template.xlsx") ) val sheet = wb.getSheetAt(0) // Заполняем шапку таблицы val headerRow = sheet.getRow(0) for(idx <- 1 to months.size) { headerRow.getCell(idx).setCellValue(months(idx - 1)) } // Заполняем тело таблицы for(key @ (rowNumber, rowName) <- data.keys) { val row = sheet.getRow(rowNumber) row.getCell(0).setCellValue(rowName) for(idx <- 1 to data(key).size) { row.getCell(idx).setCellValue(data(key)(idx - 1)) } } // Также нужно заполнить подвал, иначе он не пересчитается val footerRow = sheet.getRow(data.size + 1) for(idx <- 1 to months.size) { val cell = footerRow.getCell(idx) val range = new CellRangeAddress(1, data.size, idx, idx) cell.setCellFormula(s"SUM(${range.formatAsString})") } // Сохраняем отчет val resultFile = new FileOutputStream("report.xlsx") wb.write(resultFile) resultFile.close } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2014, 16:11 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
nexoma, мне ничего не надо записывать, просто чтение xlsx файлов. версия perl - 5.14.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2014, 16:57 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
модуль Spreadsheet::ParseXLSX через полтора часа прочитал файл. скорость работы .............. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2014, 18:02 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
evgen25скорость работы ..............Угу. Давно уже заметил, что как-то неторопливо разбирается XML "нормальными" парсерами. Думаю, это из-за необходимости построения дерева в целях универсальности применения. Может статься, что под конкретную задачу выковыривания только нужных данных из файла с заранее точно известной структурой проще свой парсер написать, без построения дерева. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2014, 19:28 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
vkle, ради эксперемента засек время за сколько оба модуля обработают файл. итог не утешителен: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2014, 19:55 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
spreadsheet::xlsx - 8 минут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2014, 19:56 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
Spreadsheet::ParseXLSX - 1 час 10 минут. извините что тремя сообщениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2014, 19:56 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
evgen25, теоретически можно переписать Spreadsheet::ParseXLSX, используя вместо парсер-модуля XML::Twig модуль XML::Fast, который быстрее, но кто это будет делать? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:59 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
volodin661, а можно ли в парсере менять формат данных на лету? как в экселе меня в колонке тип данны (числовой. текстовый и т.д.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 15:47 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
тоже уже подумал о том что модуль под другую библиотеку переписать, только кто сопровождать это потом будет, да и что то не очень получается со структурой экселевского документа разобраться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 16:49 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
evgen25, парсер парсером, а сама задача-то какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 18:56 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
volodin661, данные из xlsx файла положить в базу данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 16:17 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
evgen25данные из xlsx файла положить в базу данных.Вариант конвертнуть на стороне Екселя эти XLSX в формат CSV не рассматривается? Чтобы его потом напрямую затащить в базу чем-то вроде LOAD DATA INFILE . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 17:29 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
Может стоит обратить своё внимание на Xslt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2014, 23:14 |
|
||
|
perl и чтение из xlsx файлов
|
|||
|---|---|---|---|
|
#18+
vkle, сначало по пробовал в текстовый формат с табулящией, нашлись свои особенности. потом по пробовал csv, пока проблем не выявлено. хотел без всяких там конвертирования данных обойтись. но похоже адекватного решения не найти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2014, 07:29 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=72&tid=1462193]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 352ms |

| 0 / 0 |
