Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 841

/ вопрос открыт /

Доброго времени суток уважаемые эксперты.

У меня такой вопрос как совместить типы OleVariant и Array?

Суть проблемы в следующем:
С помощю Excel нужно открыть текстовый файл и используя разделитель "запятая" сформировать колонки.
На данном этапе все это я делаю так как показано в приложении, но проект не компилируется из за ошибок (На месте ошибки коментарий)
В процедуре открытия файла .OpenText () за формат сформированных ячеек отвечает параметр FieldInfo который является массивом массивов при записи макроса это выглядит так: Array(Array(y,x),Array(y,x)...) где y номер столбца, х тип данных в нем.


Вопрос можно поставить по другому как заполнить поле FieldInfo?

P.S. Вопрос уже задавался (3555) правда более коряво изложенный.

Приложение:
  1. procedure TForm1.CreateExelClick(Sender: TObject);
  2. Type
  3. TArray = array [1..2] of word;
  4. var
  5. WorkBook:Variant;
  6. FIXLSApp:TExcelApplication;
  7. FIWorkBook:ExcelWorkbook;
  8. ExcelArray: array [1..12] of TArray;
  9. LitleArray: TArray;
  10. i:integer;
  11. begin
  12.  
  13. Litlearray[2]:=2;
  14. for i:=1 to 12 do
  15. begin
  16. Litlearray[i]:=i;
  17. ExcelArray[i]:=Litlearray;
  18. end;
  19.  
  20. FIXLSApp := TExcelApplication.Create(Self);
  21. FIXLSApp.Visible[0]:=true;
  22. if FIXLSApp.WindowState[0] = xlMinimized then
  23. FIXLSApp.WindowState[0] := xlNormal;
  24. FIXLSApp.ScreenUpdating[0] := true;
  25.  
  26.  
  27.  
  28. OLEVariant(FiXLSApp.Workbooks).OpenText (Filename:='filename.txt',
  29. Origin:=65000,
  30. StartRow:=1,
  31. DataType:=xlDelimited,
  32. TextQualifier:=xlDoubleQuote,
  33. ConsecutiveDelimiter:=true,
  34. Tab:=True,
  35. Semicolon:=False,
  36. Comma:=True,
  37. Space:=False,
  38. Other:=False,
  39. FieldInfo:=ExcelArray, // [Error]Unit1.pas(178):Type not allowed in OLE Automation call
  40. TrailingMinusNumbers:=True);
  41.  
  42.  
  43.  
  44. FiXLSApp.Workbooks.__OpenText ('filename.txt',
  45. 65000,1,xlDelimited,xlDoubleQuote,true,True,False,True,
  46. False,False,
  47. ExcelArray //[Error]Unit1.pas(186):Incompatible types OleVariant and Array
  48. ,True);
  49. end;


Кириченко Сергей Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Кириченко Сергей (статус: 1-ый класс)
Вопрос отправлен: 3 марта 2010, 14:02
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 3 марта 2010, 15:58; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 3 марта 2010, 14:28 [#1]:

Скажи мне, что тебе нужно в итоге получить. Таблицу Excel?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Кириченко Сергей

Кириченко Сергей (статус: 1-ый класс), 3 марта 2010, 15:01 [#2]:

Да и я ее получаю если не заполнять параметр FieldInfo но цифры отображаются в формате 1ю22334Е+10, а нужно 123455643534, так и с этой проблемой справляюсь потом (изменяю формат нужных ячеек на "цифровой"), но это плохой вариант решения лучше изначально сделать столбцы текстовыми.
min@y™

min@y™ (статус: Доктор наук), 3 марта 2010, 15:09 [#3]:

А не проще воспользоваться компонентом XLSReadWriteII?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 3 марта 2010, 15:09 [#4]:

если хочется, что бы столбцы были текстовыми, надо добавить в начало символ одиночной кавычки. То есть, где то так
'12345
Галочка "подтверждения прочтения" - вселенское зло.
Кириченко Сергей

Кириченко Сергей (статус: 1-ый класс), 3 марта 2010, 15:47 [#5]:

min@y™: Как говорится нужно сначала о нем знать скачаю и посмотрю как с ним работать.
Кириченко Сергей

Кириченко Сергей (статус: 1-ый класс), 3 марта 2010, 15:47 [#6]:

Вадим К:
Вариант
min@y™

min@y™ (статус: Доктор наук), 3 марта 2010, 15:58 [#7]:

Цитата (Кириченко Сергей):

Как говорится нужно сначала о нем знать скачаю и посмотрю как с ним работать.

Пока не скачаешь - не узнаешь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:58
Выполнено за 0.02 сек.