Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.07;
Скачать: CL | DM;

Вниз

Как вытащить данные из excel   Найти похожие ветки 

 
FANAT ©   (2005-07-19 09:19) [0]

Здравствуйте.
Ни когда не сталкивался с проблемой вытаскивания данных из excel.
Проблема в том что существует файл *.log при открытии его в текстовом виде видна "абракадабра" а при открытии в excel все прекрасно видно. Но вот не задача я не знаю как мне считать из полей 2,7 и 5,7 данные...
Подскажите пожалуйта. Спасибо.


 
evvcom ©   (2005-07-19 09:44) [1]


> при открытии его в текстовом виде видна "абракадабра" а
> при открытии в excel все прекрасно видно

А ты попробуй его в Norton Commander по F3 открыть. Или может молодежь уже не знает, что это такое? :) Тогда в блокноте выбери шрифт Terminal, теперь видно?


 
evvcom ©   (2005-07-19 09:47) [2]

Еще вариант: в командной строке набери
type <имя файла>
Сообщи о результатах. Может тогда и не потребуется из пушки (Excel) по воробьям?


 
FANAT ©   (2005-07-19 09:56) [3]

Результаты...
ну со шрифтами играть бесполезно (На всякий случай попробывал - ни чего!) ...
про type - пишет тоже какую то обракадабру...
но...
прочитал статью в форуме... сумел вытащить всю инфу в stringgrid
но вот незадача там в двух полях должно время отображаться а отоборажается число...
не подскажите как сделать что бы там было время и как это время вытащить из stringgrid с полей 2,7 и 5,7... в Label.Caption
спасибо...


 
evvcom ©   (2005-07-19 10:03) [4]

Выходит, что не OEM-кодировка. И все равно Excel здесь неуместен. Имхо.

> сумел вытащить всю инфу в stringgrid

Отсюда поподробнее.


 
FANAT ©   (2005-07-19 10:09) [5]

function SaveAsExcelFile(stringGrid: TstringGrid; FileName: string): Boolean;
const
 xlWBATWorksheet = -4167;
var
 Row, Col: Integer;
 GridPrevFile: string;
 XLApp, Sheet: OLEVariant;
begin
 Result := False;
 XLApp  := CreateOleObject("Excel.Application");
 try
   XLApp.Visible := False;
   XLApp.Workbooks.Add(xlWBatWorkSheet);
   Sheet      := XLApp.Workbooks[1].WorkSheets[1];
   Sheet.Name := "My Sheet Name";
   for col := 0 to stringGrid.ColCount - 1 do
     for row := 0 to stringGrid.RowCount - 1 do
       Sheet.Cells[row + 1, col + 1] := stringGrid.Cells[col, row];
   try
     XLApp.Workbooks[1].SaveAs(FileName);
     Result := True;
   except
     // Error ?
   end;
 finally
   if not VarIsEmpty(XLApp) then
   begin
     XLApp.DisplayAlerts := False;
     XLApp.Quit;
     XLAPP := Unassigned;
     Sheet := Unassigned;
   end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if SaveAsExcelFile(stringGrid1, "c:\1.log) then
   ShowMessage("Готово!");
end;

Теперь  вот незадача там в двух полях должно время отображаться а отоборажается число...
не подскажите как сделать что бы там было время и как это время вытащить из stringgrid с полей 2,7 и 5,7... в Label.Caption

Может кто знает...


 
evvcom ©   (2005-07-19 10:17) [6]

А... все-таки через Excel. А я уж думал в стринггриде нормально стал отображаться.

> время отображаться а отоборажается число
> как это время вытащить из stringgrid с полей 2,7 и 5,7

Делаешь в Excel "Запись макроса", выполняешь нужные действия (установка формата нужной ячейки в формат даты/времени и копирования из ячейки 2,7 (стиль ссылок R1C1?) в какую-нибудь другую), анализируешь полученный макрос и переводишь в Delphi.
Но это нерационально. А рационально - выяснить кодировку файла и читать его напрямую из своего кода. Если файл log небольшой, кинь мне на мыло, посмотрю, что за кодировка такая загадочная.


 
FANAT ©   (2005-07-19 10:28) [7]

Все... файлик заслал... жду с нетерпением твоего ответа!


 
evvcom ©   (2005-07-19 10:39) [8]

Кто-то этому файлику расширение с xls на log поменял, а так это обычный Excel-файл. Тогда проще действительно не париться и через Excel открывать. Стиль ссылок в файле действительно в R1C1 установлен.

> должно время отображаться а отоборажается число

У меня время и отображается.


 
FANAT ©   (2005-07-19 10:43) [9]

ну это понятно....
у меня в экселе тоже отображается....
но когда считываю это в стрингрид.... то в поле где должно быть время....пишется число по типу...
35835,3546535654 а должно быть 09.02.1998  10:26:00 и это почему то только в строках Begin Time и End Time...
как перевести это число в формат времени?


 
evvcom ©   (2005-07-19 10:49) [10]

DateTimeToStr, DateToStr, TimeToStr + F1


 
FANAT ©   (2005-07-19 11:00) [11]

Блин... я что то запарился...
где я ошибся?

procedure TForm1.Button2Click(Sender: TObject);
var
t:TDateTime;
begin
 t:=StrToDateTime(Edit1.Text);
 Label1.Caption:=DateTimeToStr(t);
end;

end.

Ну это так.... для проверки на скорую руку написал типа если в Edit1.Text вводить это число 35835,3546535654  что бы в Label1.Caption выводилось время...
и не работает...
где ошибка?


 
evvcom ©   (2005-07-19 11:22) [12]

"35835,3546535654" - это строка не в формате даты/времени
Label1.Caption:=TimeToStr(StrToFloat(Edit1.Text));



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

Текущий архив: 2005.08.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.037 c
1-1121577618
Alex77777
2005-07-17 09:20
2005.08.07
Как загрузить название файлов в Listbox


14-1121405345
rentgen
2005-07-15 09:29
2005.08.07
Глюки форума или глюки у меня


4-1118032871
Салават
2005-06-06 08:41
2005.08.07
описание файлов


11-1104342568
mdw
2004-12-29 20:49
2005.08.07
С Новым годом!


14-1121366741
BorisMor
2005-07-14 22:45
2005.08.07
Еще одна провокационная ветка про 2 мировую.