Форум: "Основная";
Текущий архив: 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.035 c