|
#1
|
|||
|
|||
БД Access и Excel
Такая проблема, аксесс БД, там есть числовое поле. В делфи прога которая добавляет, редактирует эти данные. Вобщем когда вводишь в 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 --------------------------- в чем может быть проблема? ТОТ, КТО ДУМАЕТ, ЧТО МОЖЕТ ОБОЙТИСЬ БЕЗ ДРУГИХ, ОШИБАЕТСЯ; НО ТОТ, КТО ДУМАЕТ, ЧТО ДРУГИЕ НЕ МОГУТ ОБОЙТИСЬ БЕЗ НЕГО, ОШИБАЕТСЯ ЕЩЕ СИЛЬНЕЕ. |