Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: не понятно как экспортировать даты в Excel  [new]
Gator
Member

Откуда: Москва
Сообщений: 13809
Соколинский Борис
В Excel-e есть древний баг: когда через Automation задаешь Range.NumberFormat на самом деле отрабатывает Range.NumberFormatLocal. Лечится либо макросом, либо шаблоном с форматированием (условным форматированием).
Вроде как в 2007 Офисе его исправили? Проверить не могу.
9 дек 10, 17:57    [9912947]     Ответить | Цитировать Сообщить модератору
 Re: не понятно как экспортировать даты в Excel  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 6919
Gator
Вроде как в 2007 Офисе его исправили? Проверить не могу.
Я могу. Не исправили.
9 дек 10, 18:23    [9913163]     Ответить | Цитировать Сообщить модератору
 Re: не понятно как экспортировать даты в Excel  [new]
Gator
Member

Откуда: Москва
Сообщений: 13809
Соколинский Борис
Gator
Вроде как в 2007 Офисе его исправили? Проверить не могу.
Я могу. Не исправили.
Вот засада! Неужели придется проверять в Documents to Go?
9 дек 10, 18:52    [9913312]     Ответить | Цитировать Сообщить модератору
 Re: не понятно как экспортировать даты в Excel  [new]
Gator
Member

Откуда: Москва
Сообщений: 13809
Соколинский Борис
Gator
Вроде как в 2007 Офисе его исправили? Проверить не могу.
Я могу. Не исправили.
Вот засада! Неужели придется проверять в Documents to Go?
9 дек 10, 18:53    [9913318]     Ответить | Цитировать Сообщить модератору
 Re: не понятно как экспортировать даты в Excel  [new]
Antoshka
Member

Откуда:
Сообщений: 828
Попробуй для конвертирования форматной строки дельфи в Excel следующий код:

class function tExcelHelper.ConvertFormatString(const DelphiFormatString: string;
    ExcelApp: variant): string;
  var
    i: integer;
    s: string;
begin
  s:= '';

  for i:= 1 to Length(DelphiFormatString) do
    case UpCase(DelphiFormatString[i]) of
      '/': s:= s + VarToStr(ExcelApp.International[xlDateSeparator]);
      ':': s:= s + VarToStr(ExcelApp.International[xlTimeSeparator]);
      'D': s:= s + VarToStr(ExcelApp.International[xlDayCode]);
      'M': s:= s + VarToStr(ExcelApp.International[xlMonthCode]);
      'Y': s:= s + VarToStr(ExcelApp.International[xlYearCode]);
      'H': s:= s + VarToStr(ExcelApp.International[xlHourCode]);
      'N': s:= s + VarToStr(ExcelApp.International[xlMinuteCode]);
      'S': s:= s + VarToStr(ExcelApp.International[xlSecondCode]);
      ',': s:= s + VarToStr(ExcelApp.International[xlThousandsSeparator]);
      '.': s:= s + VarToStr(ExcelApp.International[xlDecimalSeparator]);
    else
      s:= s + DelphiFormatString[i];
    end;

  Result:= s;
end;

У меня работает на всех версиях Excel, начиная с 2003. (Ниже просто не проверял).

Единственное, нужно всегда указывать формат выводимого значения иначе будут траблы с автоподбором формата. Для строк указывать текстовый формат '@'
10 дек 10, 09:00    [9915031]     Ответить | Цитировать Сообщить модератору
 Re: не понятно как экспортировать даты в Excel  [new]
vgorshkov
Member

Откуда: Ашгабат, Туркменистан
Сообщений: 95
Antoshka,

Благодарю, теперь все работает. Функция - супер
10 дек 10, 09:29    [9915149]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: не понятно как экспортировать даты в Excel  [new]
MrDeadgott
Member

Откуда:
Сообщений: 2
Добрый день. Суть проблемы. Передаю данные из Delphi в Exel. Причём в заранее созданную книгу. У меня в БД Delphi порядка 78 записей, а в Exel передаёт только 29. Почему? Помогите пожалуйста. Вот обработчик сего действия:

procedure TForm1.Button9Click(Sender: TObject);
var
a,b: Integer;
ExApp, WB, WS: Variant;
begin
ExApp:=CreateOleObject('Excel.Application');
WB:=ExApp.WorkBooks.Open('C:\Users\Вассська\Desktop\База данных\База данных(1)\данные1(1).xlsm');
WS := ExApp.Workbooks[1].WorkSheets[1];
with TMyDBGrid(DBGrid1).DataLink do
begin

for a:=0 to (RecordCount-1) do
begin
ActiveRecord:=a;
for b:=0 to (FieldCount-1) do
begin
WS.Cells[a+2, b+1].Value:=Fields[b].AsString;
end;
end;
ExApp.Visible:=true;
end;

end;


Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
15 янв 14, 17:34    [15420385]     Ответить | Цитировать Сообщить модератору
 Re: не понятно как экспортировать даты в Excel  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23234
MrDeadgott
with TMyDBGrid(DBGrid1).DataLink do

Должно быть DBGrid1.DataSet и перед этим вызов DBGrid1.DataSet.First, а потом цикл while not DBGrid1.DataSet.Eof с DBGrid1.DataSet.Next в теле цикла.
15 янв 14, 18:24    [15420742]     Ответить | Цитировать Сообщить модератору
 Re: не понятно как экспортировать даты в Excel  [new]
MrDeadgott
Member

Откуда:
Сообщений: 2
wadman
MrDeadgott
with TMyDBGrid(DBGrid1).DataLink do

Должно быть DBGrid1.DataSet и перед этим вызов DBGrid1.DataSet.First, а потом цикл while not DBGrid1.DataSet.Eof с DBGrid1.DataSet.Next в теле цикла.


Дружище, напиши пожалуйста этот код. Я уже 15 дней насилую мозг этой бд(почти круглосуточно)=(
Буду премного благодарен
15 янв 14, 19:22    [15421035]     Ответить | Цитировать Сообщить модератору
 Re: не понятно как экспортировать даты в Excel  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23234
MrDeadgott, см 15428963
17 янв 14, 12:05    [15429018]     Ответить | Цитировать Сообщить модератору
 Re: не понятно как экспортировать даты в Excel  [new]
user89
Member

Откуда:
Сообщений: 2070
MrDeadgott,

на всякий случай
Sheet.Range['A2', EmptyParam].CopyFromRecordset(ADOQuery1.Recordset, EmptyParam, EmptyParam);
17 янв 14, 13:09    [15429570]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: не понятно как экспортировать даты в Excel  [new]
Sevolod
Member

Откуда:
Сообщений: 105
А кто-нибудь сталкивался вот с чем.

Если экспортировать из Delphi в Excel дату без времени, то установка
.NumberFormat := 'ДД/ММ/ГГГГ'
помогает. Месяц и день местами не меняются. А если экспортировать дату со временем, то
.NumberFormat := 'ДД/ММ/ГГГГ ЧЧ:ММ:СС'
не помогает. Месяц и день местами меняются.
10 авг 15, 12:31    [17998129]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: не понятно как экспортировать даты в Excel  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 43623
Antoshka
Попробуй для конвертирования форматной строки дельфи в Excel следующий код:

class function tExcelHelper.ConvertFormatString(const DelphiFormatString: string;
    ExcelApp: variant): string;
  var
    i: integer;
    s: string;
begin
  s:= '';

  for i:= 1 to Length(DelphiFormatString) do
    case UpCase(DelphiFormatString[i]) of
      '/': s:= s + VarToStr(ExcelApp.International[xlDateSeparator]);
      ':': s:= s + VarToStr(ExcelApp.International[xlTimeSeparator]);
      'D': s:= s + VarToStr(ExcelApp.International[xlDayCode]);
      'M': s:= s + VarToStr(ExcelApp.International[xlMonthCode]);
      'Y': s:= s + VarToStr(ExcelApp.International[xlYearCode]);
      'H': s:= s + VarToStr(ExcelApp.International[xlHourCode]);
      'N': s:= s + VarToStr(ExcelApp.International[xlMinuteCode]);
      'S': s:= s + VarToStr(ExcelApp.International[xlSecondCode]);
      ',': s:= s + VarToStr(ExcelApp.International[xlThousandsSeparator]);
      '.': s:= s + VarToStr(ExcelApp.International[xlDecimalSeparator]);
    else
      s:= s + DelphiFormatString[i];
    end;

  Result:= s;
end;


У меня работает на всех версиях Excel, начиная с 2003. (Ниже просто не проверял).

Единственное, нужно всегда указывать формат выводимого значения иначе будут траблы с автоподбором формата. Для строк указывать текстовый формат '@'
спасибо
4 дек 17, 12:48    [21004016]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить