![]() |
|
|
#1
|
|||
|
|||
|
Такая проблема, аксесс БД, там есть числовое поле. В делфи прога которая добавляет, редактирует эти данные. Вобщем когда вводишь в edit с числовым полем число где нули вначале(типа 003), они обрезаются и сохраняется только 3. Я изменил поле на текстовое тогда всё ок. Но при транспортировке в Excel, нули обрезаются там). Как сделать чтоб нули перед числом сохранялись в том и в другом случае?
Доп. вопрос, когда в Excel переносишь точка заменяется на запятую, можно исправить? |
|
#2
|
|||
|
|||
|
Вот код экспорта в Excel там всё объявленно как Variant,и значит если в значении только цифры он распознаёт его как число и обрезает нули слева(да?), как изменить чтоб этого небыло?
Код:
procedure TMainForm.Button1Click(Sender: TObject);
var
XLApp,Sheet,Colum:Variant;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='татата';
Colum:=XLApp.Workbooks[1].WorkSheets['татата'].Columns;
XLApp.WorkBooks[1].WorkSheets[1].Range['B1:E1'].Merge;
Colum.Columns[1].ColumnWidth:=10;
Colum.Columns[2].ColumnWidth:=10;
Colum:=XLApp.Workbooks[1].WorkSheets['татата'].Rows;
Colum.Rows[1].Font.Bold:=true;
Colum.Columns[1].font.Bold:=true;
XLApp.WorkBooks[1].WorkSheets[1].Columns[1].HorizontalAlignment := 4;
XLApp.WorkBooks[1].WorkSheets[1].Columns[4].HorizontalAlignment := 4;
Sheet:=XLApp.Workbooks[1].WorkSheets['татата'];
Sheet.Cells[1,2]:='татата';
Sheet.Cells[3,1]:=татата';
Sheet.Cells[1,6]:=DataModule2.ADOQuery1.Fields.Fields[1].AsString;
Sheet.Cells[3,2]:=DataModule2.ADOQuery1.Fields.Fields[2].AsString;
end; |
|
#3
|
||||
|
||||
|
Укажи варианту явно что это не число, а строка.
|
|
#4
|
|||
|
|||
|
Aristarh Dark
А по подробней как сделать? Тут что поставить? Код:
Sheet.Cells[1,6]:=DataModule2.ADOQuery1.Fields.Fields[1].AsString; |
|
#5
|
||||
|
||||
|
Сделай запись макроса в экселе когда меняешь тип ячейки с "общий" на "текстовый". Посмотри в макросе какие свойства ячейки меняются. Изменяй их таким же образом из своей программы при перегрузке данных.
|
|
#6
|
|||
|
|||
|
Это намного упростило задачу). Постараюсь так если полегче никак.
|
|
#7
|
|||
|
|||
|
Нашёл:
Цитата:
Код:
Sheet.Cells[1,6]:=#39+DataModule2.ADOQuery1.Fields.Fields[1].AsString; |
|
#8
|
|||
|
|||
|
Цитата:
Вот этот же код на delphi 2009 экспорт на Excel 2003 дает ошибку... --------------------------- Debugger Exception Notification --------------------------- Project Spravochnik_proj.exe raised exception class EOleError with message 'Method 'WorkSheets' not supported by automation object'. --------------------------- Break Continue Help --------------------------- в чем может быть проблема? |