Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизMS Excel + Delphi открытие файла (формат ячеек) Найти похожие ветки
← →
КиТаЯц © (2004-11-05 11:21) [0]Всем здраствуйте!
Открываю из под Delphi файл используя Excel OleObjectfunction 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];
- что здесь писать для сохранения шаблона? достаточно только имя+.xlt подставить?
...
задаем форматы
...
Sheet.SaveAs(?)
← →
Gloomer © (2004-11-05 14:16) [9]> Sheet.SaveAs(?) - что здесь писать для сохранения шаблона? достаточно только имя+.xlt подставить?
Вот именно, этого достаточно. При открытии шаблона имя доку не присваивается, точнее "Имя_шаблона"+номер_дока.xls
И еще - у тебя данные экспортируются из Excel или импортируются?
Если экспортируются, то какая тебе разница до формата - мас преобразуешь как надо.
Если импортируются, то задаешь формат, а потом присваиваешь значение ячейке.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.047 c