|
Вопрос # 3 841/ вопрос открыт / |
|
Доброго времени суток уважаемые эксперты.
У меня такой вопрос как совместить типы OleVariant и Array?
Суть проблемы в следующем:
С помощю Excel нужно открыть текстовый файл и используя разделитель "запятая" сформировать колонки.
На данном этапе все это я делаю так как показано в приложении, но проект не компилируется из за ошибок (На месте ошибки коментарий)
В процедуре открытия файла .OpenText () за формат сформированных ячеек отвечает параметр FieldInfo который является массивом массивов при записи макроса это выглядит так: Array(Array(y,x),Array(y,x)...) где y номер столбца, х тип данных в нем.
Вопрос можно поставить по другому как заполнить поле FieldInfo?
P.S. Вопрос уже задавался (3555) правда более коряво изложенный.
Приложение: Переключить в обычный режим- procedure TForm1.CreateExelClick(Sender: TObject);
- Type
- TArray = array [1..2] of word;
- var
- WorkBook:Variant;
- FIXLSApp:TExcelApplication;
- FIWorkBook:ExcelWorkbook;
- ExcelArray: array [1..12] of TArray;
- LitleArray: TArray;
- i:integer;
- begin
-
- Litlearray[2]:=2;
- for i:=1 to 12 do
- begin
- Litlearray[i]:=i;
- ExcelArray[i]:=Litlearray;
- end;
-
- FIXLSApp := TExcelApplication.Create(Self);
- FIXLSApp.Visible[0]:=true;
- if FIXLSApp.WindowState[0] = xlMinimized then
- FIXLSApp.WindowState[0] := xlNormal;
- FIXLSApp.ScreenUpdating[0] := true;
-
-
-
- OLEVariant(FiXLSApp.Workbooks).OpenText (Filename:='filename.txt',
- Origin:=65000,
- StartRow:=1,
- DataType:=xlDelimited,
- TextQualifier:=xlDoubleQuote,
- ConsecutiveDelimiter:=true,
- Tab:=True,
- Semicolon:=False,
- Comma:=True,
- Space:=False,
- Other:=False,
- FieldInfo:=ExcelArray, // [Error]Unit1.pas(178):Type not allowed in OLE Automation call
- TrailingMinusNumbers:=True);
-
-
-
- FiXLSApp.Workbooks.__OpenText ('filename.txt',
- 65000,1,xlDelimited,xlDoubleQuote,true,True,False,True,
- False,False,
- ExcelArray //[Error]Unit1.pas(186):Incompatible types OleVariant and Array
- ,True);
- end;
 |
Вопрос задал: Кириченко Сергей (статус: 1-ый класс)
Вопрос отправлен: 3 марта 2010, 14:02
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 7; последнее сообщение — 3 марта 2010, 15:58; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 3 марта 2010, 14:28 [#1]:
Скажи мне, что тебе нужно в итоге получить. Таблицу Excel?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Кириченко Сергей (статус: 1-ый класс), 3 марта 2010, 15:01 [#2]:
Да и я ее получаю если не заполнять параметр FieldInfo но цифры отображаются в формате 1ю22334Е+10, а нужно 123455643534, так и с этой проблемой справляюсь потом (изменяю формат нужных ячеек на "цифровой"), но это плохой вариант решения лучше изначально сделать столбцы текстовыми.
|
|
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™: Как говорится нужно сначала о нем знать скачаю и посмотрю как с ним работать.
|
|
min@y™ (статус: Доктор наук), 3 марта 2010, 15:58 [#7]:
Цитата (Кириченко Сергей):
Как говорится нужно сначала о нем знать скачаю и посмотрю как с ним работать.
Пока не скачаешь - не узнаешь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|