Парсинг xls таблицы.
Всем доброго времени суток.
Подскажите в какую сторону копать: есть xls таблица, к примеру в ячейке А1 содержится наименование изделия (табуретка), в ячейке В1 стоит ее цена? Если мне необходимо по условию найти "табуретка" и взять ее цену, как это реализовать? :D |
Файл что ли екзеля парсить собираетесь? ДЛя екзеля есть VBA. Для веба сохраните в html или xml. WScript еще есть.
|
WSrcipt
var excel = new ActiveXObject("Excel.Application"); var ws = excel.Workbooks.Open(file_name).Worksheets; Воркбука вся ваша. |
Цитата:
А на самом деле: да, есть excel-файл. Необходимо вытянуть наменование = цена и передать эти параметры в html документ с ценами. Думаю, как-то реализовать это через конвертацию xls в xml и через bash, perl вытягивать значения. |
Лучше всего если конвертировать то в csv. Тогда с обработкой любым скриптовым языком ни малейших проблем не возникнет.:)
Иначе надо в любом случае искать готовые тяжеловесные библиотеки. |
Да вот такие как вы мне всю карму и обосрали. Шучу по-доброму. А на самом деле х проссышь где это файл, почему нет при нем екзеля, зачем ковырять бинарный формат, флешки что ли перестали выпускать или проволока в интернет оборвалась... ваше дело.
|
Цитата:
Цитата:
|
Оказалось что файл на руках! Уписаться можно, а сохранить его в хтмл и работать в его ДОМе - нельзя. Иначе в чем труд программиста будет заключаться? Это не считая что для xml наверно во всех языках есть встроенный парсер http://api.jquery.com/jquery.parsexml/
А как же чэсэвэ? А чсв это текст. А как же WScript? А это не ява-скрипт, да? |
Дарю, осталось от одной тряхомудии. Собирает все данные, то есть со всех листов в текстовый файл разделитель табулятор. ВОт вам и чсв.
var total=0; var ForReading = 1, ForWriting = 2, ForAppending = 8; var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0; var WshShell = WScript.CreateObject("WScript.Shell"); strPath = WshShell.currentDirectory; var fso = new ActiveXObject("Scripting.FileSystemObject"); open_excel(); function open_excel(){ var file_name = fso.BuildPath(strPath, 'origin.xls'); var excel = new ActiveXObject("Excel.Application"); var ws = excel.Workbooks.Open(file_name).Worksheets; var res=[]; for(var cnt=1; cnt<ws.Count; cnt++) { var sheet = ws(cnt); var row_cnt=0; while(true) { row_cnt++; var c = ''+sheet.Cells(row_cnt, 1).Value; if(c=='undefined') break; if(row_cnt > 65530) break; row=[]; for(var j=1; j<8; j++) row.push(sheet.Cells(row_cnt,j).Value); res.push(row.join("\t")); } } excel.Quit(); process(res); WScript.Echo('Total: '+cnt); } function process(res) { var out_file_name=fso.BuildPath(strPath, 'merge.txt'); var ts = fso.CreateTextFile(out_file_name, true, true); ts.Write(res.join("\n")); ts.Close(); } |
kostyanet , спасибо за "подгон" :))
|
Часовой пояс GMT +3, время: 22:17. |