Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

MS Excel + Delphi открытие файла (формат ячеек)   Найти похожие ветки 

 
КиТаЯц ©   (2004-11-05 11:21) [0]

Всем здраствуйте!
Открываю из под Delphi файл используя Excel OleObject

function XlsToStringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
var
 XLApp, Sheet: OLEVariant;
 RangeMatrix: Variant;
 x, y: Integer;
begin
 Result := False;
 XLApp := CreateOleObject("Excel.Application");
 try
   XLApp.Visible := False;
   XLApp.Workbooks.Open(AXLSFile);

   Sheet := XLApp.Workbooks[1].WorkSheets[1];
   Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

   //Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).NumberFormat:="@";

   x := XLApp.ActiveCell.Row;
   y := XLApp.ActiveCell.Column;

   //XLApp.Range["A1", XLApp.Cells.Item[X, Y]].NumberFormat:="@";
 ...
 И так далее...
 ...
 finally
   if not VarIsEmpty(XLApp)
     then begin
       XLApp.DisplayAlerts := False;
       XLApp.Quit;
       XLAPP := Unassigned;
       Sheet := Unassigned;
       Result := True;
     end;
 end;
end;


Тут такая беда... Excel по умолчанию открывает все ячейки в ОБЩЕМ формате, т.е. преобразует из как ему нравится. А мне надо в ТЕКСТОВОМ, т.е. чтобы ячейки открылись так как есть. Пытаюсь менять формат (заремареные строки) - вроде получается, но...
Ячейки УЖЕ переформатированы, т.е. это ничего не дает и еще больше запутывает данные и формат нужно поменять (задать) ДО ОТКРЫТИЯ ФАЙЛА (заполнения ячеек).

Как это сделать?
Спасибо.

Вариант "заранее сохранить xls файл задав текстовый формат всем ячейкам" не предлагать пожалуйста... (Excel открывает и другие "ячеистые" форматы)


 
КаПиБаРа ©   (2004-11-05 11:27) [1]

Непонятно что не работает. Вроде все правильно делаешь.
Вобщем логика такая.
Открываем файл.
Задаем формат у диапазона ячеек.
Вносим данные в эти ячейки.


 
КиТаЯц ©   (2004-11-05 13:12) [2]

Тут такое дело... Мне не надо вносить данные в ячейки Excel, мне надо их отттуда забрать (из готового файла). А он "открывается неправильно" - при открытии данные преобразовываются.

>Открываем файл.
>Задаем формат у диапазона ячеек.
Не получается - ячейки уже преобразовались и смена формата еще больше путает данные.

Короче, скорее всего вопрос содится к такой формулировке:
«Как из под Delphi задать Excel-OLE-обекту чтобы по умолчанию он все ячейки в "текстовом" формате, а не в "общем"?»


 
Symb   (2004-11-05 13:31) [3]

Насколько я помню, Excel открывает файл с теми форматами ячеек, которые были заданы при создании и редактировании файла. Т. е. он преобразовать данные должен был еще при вводе данных в ячейки.
Может быть, проблема заключается не в преобразовании при открытии, а в преобразовании данных при чтении содержимого ячеек в твои переменные из уже открытой книги?


 
КиТаЯц ©   (2004-11-05 13:42) [4]

2 Symb
Нет. Все так, как я описал. Собственно с Excel я начал заморачиваться как с универсальной штукой которая открывает кучу форматов от HTML до DBF...
Подробнее: http://www.dunin.hotmail.ru/xlsimp.html (там я, собственно, касаюсь вставшей проблеммы при открытии HTML-ки)


 
КаПиБаРа ©   (2004-11-05 13:52) [5]

КиТаЯц ©   (05.11.04 13:42) [4]
1. А если файл врукопашную в екселе открыть, данные правильно отображаются?

2. С каким типом данных проблемы? Случайно не с датой?


 
Gloomer ©   (2004-11-05 13:54) [6]

В Excel"e (чистый лист) форматируешь нужные ячейки, сохраняешь как шаблон (*.xlt). Потом в своей проге открываешь свой шаблон и...
Только в твоей проге открывается только один файл AXLSFile, а где же ячейки в общем формате?


 
Symb   (2004-11-05 13:59) [7]

А! Так значит открывается не .xls файл?

function Open(const Filename: WideString; UpdateLinks: OleVariant; ReadOnly: OleVariant; Format: OleVariant; Password: OleVariant; WriteResPassword: OleVariant; IgnoreReadOnlyRecommended: OleVariant; Origin: OleVariant; Delimiter: OleVariant; Editable: OleVariant; Notify: OleVariant;
Converter: OleVariant; AddToMru: OleVariant; lcid: Integer): Workbook; safecall;

Ну, только в поле Converter может быть что-то полезное, да и то не факт...


 
КиТаЯц ©   (2004-11-05 14:04) [8]

2 КаПиБаРа
1. Нет
2. Когда Время выглядит примерно так 01.01.01, то приображается в дату 01.01.2001; дата преображается как ей захочется, а № телефонов начинающиеся с +7 (+79272999999) преображаются в формулу какую-то страшную...

2 Gloomer
Через шаблон - это вариант :) Чего-то сразу в голову не пришло... Сразу вопрос:
Sheet := XLApp.Workbooks[1].WorkSheets[1];
...
задаем форматы
...
Sheet.SaveAs(?)
- что здесь писать для сохранения шаблона? достаточно только имя+.xlt подставить?


 
Gloomer ©   (2004-11-05 14:16) [9]

> Sheet.SaveAs(?) - что здесь писать для сохранения шаблона?  достаточно только имя+.xlt подставить?

Вот именно, этого достаточно. При открытии шаблона имя доку не присваивается, точнее "Имя_шаблона"+номер_дока.xls
И еще - у тебя данные экспортируются из Excel или импортируются?
Если экспортируются, то какая тебе разница до формата - мас преобразуешь как надо.
Если импортируются, то задаешь формат, а потом присваиваешь значение ячейке.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
14-1099032056
MBo
2004-10-29 10:40
2004.11.21
Пятничная разминка. Задачки попроще и сложные.


1-1099572575
Sectey
2004-11-04 15:49
2004.11.21
Что такое rtl70.bpl и почему оно дает исключение?


1-1099674663
X
2004-11-05 20:11
2004.11.21
Серийный упорядоченный поиск в массиве


4-1097344970
dimon_programmer
2004-10-09 22:02
2004.11.21
Как электрикой правильно выставить значение на LPT


14-1099214093
Гиви с рынка
2004-10-31 12:14
2004.11.21
лучший хард 200 гб (ide)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский