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

Вниз

Как вытащить данные из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
10-1098698215
Misha_R
2004-10-25 13:56
2005.08.07
Работа с OLE объектами


1-1121886461
Juice
2005-07-20 23:07
2005.08.07
Как можно из главного потока завершить другой поток ?


5-1092240061
xman
2004-08-11 20:01
2005.08.07
TreeView


8-1112567795
кактусбел
2005-04-04 02:36
2005.08.07
Как получить текущий уровень громкости


14-1121727655
kaif
2005-07-19 03:00
2005.08.07
А у нас есть такая организация? В США - есть.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский