|  28.08.2003, 17:48 | #1 | 
| Участник |  Использование OWC.Spreadsheet для ускорения экспорта/импорта в/из Excel. 
			
			Попробовал использовать OWC.Spreadsheet для ускорения экспорта в Excel. Результат классный – ускорение в десятки раз!!! (с 5-6 часов до 15 минут) А вот с импортом трабл!? Не могу загрузить файл типа .xls в этот компонент. Пробовал загрузить файл типа .txt с разделителями, но все значения одной строки валятся в ячейку первой колонки. Использовал код: …. Com excel = new COM("OWC.Spreadsheet"); excel.loadtext('f:\\...\\asd1.xls'); …. или: …. Com excel = new COM("OWC.Spreadsheet"); Com range; Com curSheet = new COM(); ; curSheet = excel.ActiveSheet(); range = curSheet.usedrange(); range.loadtext('f:\\...\\asd1.xls'); …. результат один - грузится несколько неудобочитаемых символов в ячейку A1 Может, кто знает решение? А то импорт из Excel 30 000 строк занимает несколько часов!? | 
|  | 
|  01.09.2003, 17:54 | #2 | 
| Участник |   
			
			Спасибо всем за активное участие    Во всем разобрался сам, тему закрываю! | 
|  | 
|  01.09.2003, 22:46 | #3 | 
| Участник | 
			
			Вот если бы вы, Storer, рассказали историю о том, что вы выяснили, народ был бы вам очень благодарен. А самое главное, в следующий раз за решением таких вопросов в следущий раз точно бы обратился к вам.
		 | 
|  | 
|  04.09.2003, 17:26 | #4 | 
| Участник | 
			
			Вот моя история про Web компонент Офиса, ускоряющего экспорт-импорт в/из Excel в десятки раз.  ..... COM curSheet; COM excel = new COM("OWC.Spreadsheet"); COM range; COM interior; ComVariant ret; Str valueCell; ; curSheet = excel.ActiveSheet(); // Пишем в ячейку: range = curSheet.range(‘A1’); range.value(‘Test-test-test’); // Играем с цветом: interior = range.interior(); interior.color(‘Green’); // перевод номера цвета в название – отдельная история. // Рамка, выравнивание, ширина колонки – аналогично  ) // Экспорт в Excel: excel.export(_fileName, _visible); // _filename – думаю понятно, _visible – показывать рез-т в Excel-е или все сделать вслепую. // Загрузка в curSheet файла типа txt с разделителями типа tab: excel.LoadText(_fileName,num2char(9),false, '\\042' ); // Параметры: (File As String, [Delimiters As String], [ConsecutiveDelimAsOne As Boolean = False], [TextQualifier As String = "\042"]) – это описание из VBA // Читаем из ячейки: ret = range.text(); valueCell = ret.bStr(); ..... Кто хочет больше, копайте dll-ку MSOWC в папке с Офисом Загрузить другие типы файлов в этот ActivX теоретически можно, а вот практически сходу не получилось, а копаться не было времени… | 
|  | 
|  04.09.2003, 23:58 | #5 | 
| Участник | 
			
			Спасибо. Интересная история. Значит проблема была в том, что вместо одного надо указать два обратных слэша в параметре '\\042'? Я правильно понимаю соль истории? | 
|  | 
|  08.09.2003, 11:40 | #6 | 
| Участник | 
			
			не совсем... я просто не знал всех параметров метода LoadText(...), теперь знаю    | 
|  | 
|  22.03.2005, 11:57 | #7 | 
| Участник | Цитата: 
		
			Storer: // Экспорт в Excel: excel.export(_fileName, _visible); // _filename – думаю понятно, _visible – показывать рез-т в Excel-е или все сделать вслепую possible solutions? Можно просто тестовый примерчик рабочий выложить на всеобщее осмотрение? Спасибо | 
|  | 
|  22.03.2005, 16:46 | #8 | 
| Гость | 
			
			Действительно,   урок по ускорению excela   никому бы не помешал-))
		 | 
|  | 
|  22.03.2005, 17:48 | #9 | 
| Участник | 
			
			Кому интересно, тут ссылка с описанием работы с использованием компонент из MSOWC.DLL  http://www.ridder.kz/public/2000_11_offcom/index.htm | 
|  | 
|  22.03.2005, 18:45 | #10 | 
| Участник | 
			
			ссылка хорошая, только в ней выгрузка данных из текстового файла в Эксель через SpreadSheet - тогда уж проще в xls сразу писать, как в текстовый файл. А меня интересует маленький примерчик, как вывести одно значение в поле в Эксель. Начало есть. А вот соединение с Экселевским файлом - метод connect - нет.   | 
|  | 
|  23.03.2005, 20:34 | #11 | 
| Участник | 
			
			В строке Цитата: 
		
			excel.export(_fileName, _visible);
		
	 curSheet.export(_fileName, _visible); | 
|  | 
|  24.03.2005, 12:22 | #12 | 
| Участник | 
			
			Спасибо storer. Только вот вопрос возник другой При вставке в ячейку формулы типа: PHP код: 
			Как нормально вставить формулу | 
|  | 
|  24.03.2005, 12:45 | #13 | 
| Administrator | 
			
			Надо вставить английскую версию формулы. Т.е. вместо СУММ написать SUM.
		 | 
|  | 
|  24.03.2005, 13:08 | #14 | 
| Участник | 
			
			ВОТ ЭТО ДААА!! Никогда бы не подумал. Просто Эксель то у меня русский. И другими способами выгрузки в эксель я вставлял как раз =СУММ(). А тут попробовал =SUM(), так он его сам понял и преобразовал в =СУММ() Чудеса. Спасибо большое всем. P.S. Только что обнаружил еще одну проблему. При вставке нескольких столбцов один за другим, возникает странного рода ошибка. Тестирую на ТМЦ. В первую колонку вставляю itemId во вторую ItemName Так вот, если не указан ItemName, к примеру, получается, что ItemId вставляется в объединенный столбец (1 и 2).. Как быть? Прочерки вставлять не хочется вместо пустых значений | 
|  | 
|  24.03.2005, 13:20 | #15 | 
| Участник | 
			
			Я думаю, что web-компонент SpreadSheet не русифицирован, поэтому не понимает по русски. При последующей загрузке результата в Excel(русский), он сам преобразует данные.
		 | 
|  | 
|  24.03.2005, 21:27 | #16 | 
| Участник | 
			
			Провел я маленькое исследование на досуге - по скорости выгрузки в Excel. 1. Проверил выгрузку через буфер (сразу все данные в строку, и один раз вставка) 2. Обычный вывод через insertValue Эти два способа - через ComExcelDocument_RU 3. Вывод через OWC.SpreadSheet Выводил 1000 записей из InventTable - восемь столбиков. (различные типы - str, int, real, date, формулу(тоже строка  )) Вот результаты (у меня медленный компьютер)  1. 11 сек. 2. около 10 минут!!! 3. 24 сек. Так что 3 - очень даже хороший способ, учитывая, что это он в каждую ячейку выгружает, то есть метод ComExcelDocument::numToNameCell() сжирает огромную часть из этого времени. И есть возможность работать с интерьером, как и во втором способе. Так что очень рекомендую всем, кто еще не определился.   | 
|  | 
|  25.03.2005, 10:51 | #17 | 
| Гость | 
			
			А  как  насчет скороти выгрузки через DDE ? в исследованиях не участвовало? -))) | 
|  | 
|  25.03.2005, 11:23 | #18 | 
| Участник | 
			
			нет, к сожалению...   Azat, если сварганите примерчик, буду очень рад протестировать и его.   | 
|  | 
|  26.03.2005, 15:08 | #19 | 
| Участник | 
			
			Новый вопрос:: А как при помощи этого компонента работать с шаблонами Эксель? (Возможно ли создавать файл, в который выгружаются данные, по шаблону?) | 
|  | 
|  26.03.2005, 15:18 | #20 | 
| Administrator | 
			
			Возможно загружать шаблон в OWC, там править (или туда выводить из кода), затем сохранять в файл. Единственное есть НО - шаблон должен быть в формате XML - т.е. для начала его нужно в Excel сохранить как XML. Возможно что-то при этом теряется, но по крайней мере форматирование - остается. Я не экспериментировал в плане формул - но все линии, шрифты - все остается
		 | 
|  | 
| Теги | 
| spreadsheet | 
|  | 
| 
 |