Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2012, 14:23
Интересующийся
Отправить личное сообщение для Monz Посмотреть профиль Найти все сообщения от Monz
 
Регистрация: 16.03.2012
Сообщений: 16

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 в массив. Подскажите пожалуйста как грамотно считать данные из файла и разбить в массив для последующей работы.

Последний раз редактировалось monolithed, 16.03.2012 в 19:04.
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2012, 14:34
Интересующийся
Отправить личное сообщение для Monz Посмотреть профиль Найти все сообщения от Monz
 
Регистрация: 16.03.2012
Сообщений: 16

Используя javascript в hta извлечь инфу из tsv документа, split'ом разбить её в массив и используя пару функций врисовать в html.
Проблемы с извлечь и разбить
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2012, 14:44
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #4 (permalink)  
Старый 16.03.2012, 19:16
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

alert('a    b    c'.split('    '));

alert('a\tb\tc'.split('\t'));

alert('a\tb    c'.split(/\t|    /));
Ответить с цитированием
  #5 (permalink)  
Старый 17.03.2012, 18:39
Интересующийся
Отправить личное сообщение для Monz Посмотреть профиль Найти все сообщения от Monz
 
Регистрация: 16.03.2012
Сообщений: 16

Сообщение от monolithed Посмотреть сообщение
alert('a    b    c'.split('    '));

alert('a\tb\tc'.split('\t'));

alert('a\tb    c'.split(/\t|    /));
Эти примеры я видел везде где только искал. А как быть если текст берётся из файла, а не написан ручками???
Ответить с цитированием
  #6 (permalink)  
Старый 17.03.2012, 19:34
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Monz
А как быть если текст берётся из файла, а не написан ручками???
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

Последний раз редактировалось monolithed, 18.03.2012 в 11:17.
Ответить с цитированием
  #7 (permalink)  
Старый 18.03.2012, 09:05
Интересующийся
Отправить личное сообщение для Monz Посмотреть профиль Найти все сообщения от Monz
 
Регистрация: 16.03.2012
Сообщений: 16

спасибо большое! попробую сделать эти способами
Ответить с цитированием
  #8 (permalink)  
Старый 20.03.2012, 08:39
Интересующийся
Отправить личное сообщение для Monz Посмотреть профиль Найти все сообщения от Monz
 
Регистрация: 16.03.2012
Сообщений: 16

<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 он возвращает пустую строку, что приводит к смещению данных в двумерном массиве. подскажите как избавиться от этой проблемы

Последний раз редактировалось Monz, 20.03.2012 в 09:58.
Ответить с цитированием
  #9 (permalink)  
Старый 20.03.2012, 17:48
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Monz
подскажите как избавиться от этой проблемы
покажите пример того что возвращается
Ответить с цитированием
  #10 (permalink)  
Старый 21.03.2012, 07:02
Интересующийся
Отправить личное сообщение для Monz Посмотреть профиль Найти все сообщения от Monz
 
Регистрация: 16.03.2012
Сообщений: 16

на первых скринах таблица с пустыми ячейками и результат её обработки.
на третьем и четвертом, результат при отсутствии пустых ячеек

п.с. т.к. скрины некорректно отобразились, по этой ссылке можно слить архив http://ifolder.ru/29422349
Изображения:
Тип файла: jpg экс1пуст.JPG (99.8 Кб, 8 просмотров)
Тип файла: jpg стран1пуст.JPG (45.8 Кб, 1 просмотров)
Тип файла: jpg экс1заполн.JPG (81.3 Кб, 4 просмотров)
Тип файла: jpg стран1зап.JPG (47.5 Кб, 2 просмотров)

Последний раз редактировалось Monz, 21.03.2012 в 07:13.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Серверный JavaScript. JS на сервере. Sniper Общие вопросы Javascript 9 08.11.2013 01:31
Что лучше: библиотека или чистый JS? `p r o x y Библиотеки/Тулкиты/Фреймворки 4 26.11.2010 11:16
Стоит ли учить JS? Или что то другое? aleks_valery Элементы интерфейса 1 06.08.2010 19:33
в textarea много javascript, обрамленного js - тегами belbek Серверные языки и технологии 4 05.05.2010 16:58
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36