js и *.tsv или первые шаги к псевдоБД на javascript
Начальник поставил задачу:
- имеем отчёт(таблица) из 1С в виде *.tsv файла(разделитель - табуляция) - написать hta с использованием именно javascript для сотрудников, который обратившись к tsv, считал бы данные и сформировал бы по ним Html документ. Есть ряд ограничений: нельзя использовать php,нет БД и сервера, нельзя задействовать для хранения данных файлик xml Как сформировать Html я уже разобрался.
tf.writeline("<html><head><TITLE>Сотрудники</TITLE></head><body> Быстрый поиск: <INPUT style=FONT-WEIGHT: bold title=Искать по должности, фамилии, эл.адресу size=10>---------------TD> <TD> <TR><tr align=middle> <br> <TD align=middle>Отдел</TD> <TD ------------------</TD></TR> <TR></tr><table>");
for (i=0;i<200 ;++i )
{
tf.writeline("<tr align=center>");
for (j=0;j<10 ;j++ )
{
tf.writeline("<td width=10%>"+m[i][j]+"</td>");
}
}
tf.writeline("</table></body></html>");
tf.Close();
Это пара вариантов чтения файла и юза split()
of = new ActiveXObject("Scripting.FileSystemObject");
file=of.openTextFile("C:\\projectHTA1C\\ricn016_sotr.txt", 1, true);
//alert(file.readAll())
s=file;
//var browser = window.navigator, s = '';
//for(k in browser) s += browser[k] + "\n";
//console.log(s);
var arr = file.readAll().split(/\t/);
// проходим по массиву и выводим
// каждое значение
for (x=0; x < arr.length; x++)
{
alert(+ arr[x]);
}
Проблема состоит в том, что я накосячил в считывании файла и возможно как-то неправильно применяю split() для разбиение содержимого tsv в массив. Подскажите пожалуйста как грамотно считать данные из файла и разбить в массив для последующей работы.:help: |
Используя javascript в hta извлечь инфу из tsv документа, split'ом разбить её в массив и используя пару функций врисовать в html.
Проблемы с извлечь и разбить |
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
alert('a b c'.split(' '));
alert('a\tb\tc'.split('\t'));
alert('a\tb c'.split(/\t| /));
|
Цитата:
|
Цитата:
var line = [],
count = 0,
fs = new ActiveXObject("Scripting.FileSystemObject"),
file = fs.GetFile("test.txt"),
stream = file.OpenAsTextStream(1 /* 1: read, 2: write, 8: append */, 0);
while (!stream.AtEndOfStream )
line[count++] = stream.ReadLine();
stream.Close();
line.join('').split(/[\t\n]| /);
ну или так:
var fso = new ActiveXObject("Scripting.FileSystemObject"),
file = fso.OpenTextFile("file.txt", 1, false, 0),
text = file.ReadAll(),
line = text.split(/[\t\n]| /);
file.Close();
fso = null
|
спасибо большое! попробую сделать эти способами
|
<script language="JavaScript">
var line = [], count = 0;
var m=new Array();
fzo = new ActiveXObject("Scripting.FileSystemObject");
tr = fzo.CreateTextFile("testfile3.Html", true);
fs = new ActiveXObject("Scripting.FileSystemObject");
file = fs.GetFile("ricn016_sotr.txt");
stream = file.OpenAsTextStream(1 /* 1: read, 2: write, 8: append */, 0);
while (!stream.AtEndOfStream )
line[count++] = stream.ReadLine();
stream.Close();
for (k=0;k<count ;k++ )
{
m[k]=line[k].split(/\t/);
}
tr.writeline("<html><head></head><body><table");
for (i=0;i<count ;i++ )
{
tr.writeline("<tr align=center>");
for (j=0;j<m.length ;j++ )
{
if (j!=1 & j<9) //условие на пропускание определенных столбцов
{
tr.writeline("<td width=10%>"+m[i][j]+"</td>");
}
}
}
tr.writeline("</table></body></html>");
tr.Close()
</script>
код читает tsv файл и приводит его к табличной форме в html документе. проблема только в том, что если split встречает пустое значение в tsv он возвращает пустую строку, что приводит к смещению данных в двумерном массиве. подскажите как избавиться от этой проблемы :) |
Цитата:
|
Вложений: 4
на первых скринах таблица с пустыми ячейками и результат её обработки.
на третьем и четвертом, результат при отсутствии пустых ячеек п.с. т.к. скрины некорректно отобразились, по этой ссылке можно слить архив http://ifolder.ru/29422349 |
| Часовой пояс GMT +3, время: 05:10. |