23.06.2005, 10:52 | #1 |
Участник
|
Пожалуйста,подскажите,как из exel'я перенести данныев аксапту. Какие есть подходы. как вообще работать с exele'м, какие классы... большое спасибо
|
|
23.06.2005, 13:34 | #2 |
Участник
|
1. Excel --> *.csv
2. Дальше все просто. |
|
23.06.2005, 13:40 | #3 |
Участник
|
сначала готовите шаблон
Главное меню \ Администрирование \ Периодические операции \ Экспорт/Импорт данных \ Мастер шаблонов Excel далее заполняете этот шаблон данными далее импортируете, создав группу определения с типом Excel Но лучше воспользоваться преобразованием в тестовый файл http://axapta.mazzy.ru/lib/import/ |
|
23.06.2005, 13:53 | #4 |
Участник
|
спасибо большое, но как программно записать и считать данные из exel'я ???
|
|
23.06.2005, 14:03 | #5 |
Участник
|
через ole
см. семейство классов SysExcel, например |
|
23.06.2005, 15:35 | #6 |
Участник
|
Вот кусок кода построчного чтения из файла Excel:
<div class='XPPtop'>X++</div><div class='XPP'> Filename _filename; SysExcelApplication sysExcelApplication; SysExcelWorksheets sysExcelWorksheets; SysExcelWorksheet sysExcelWorksheet; SysExcelworkbooks sysExcelWorkbooks; sysExcelApplication = SysExcelApplication::construct(); sysExcelApplication.workbooks().open([color=:red]"C:\\_\\76.xls"[/color],0,[color=:blue]true[/color]); sysExcelWorksheets = sysExcelApplication.workbooks().item(1).worksheets(); sysExcelWorksheet = sysExcelWorksheets.itemFromName([color=:red]"Лист1"[/color]); [color=:blue]while[/color] (1) { tmpStr = strltrim(strrtrim(sysExcelWorksheet.cells().item(i,1).value().bStr())); [color=:blue]if[/color] (tmpStr [color=:blue]==[/color] [color=:red]''[/color]) [color=:blue]break[/color]; ........ i++; }</div> Думаю дальше разберешься сам. |
|
23.06.2005, 16:43 | #7 |
Участник
|
а как можно определить тип поля в exele'вском файле???
просто когда получаю объект COMVariant, то нельзя получить "нормальное" значение,если приводить к toString(). comVariant = SysExcelWorksheet.cells().item(row, col).value().toString() получится "<значение> VT_R8" или "<значение> VT_BSTR" а мне нужно просто <знчение>, подскажите что-нибудь |
|
24.06.2005, 07:13 | #8 |
Участник
|
<div class='XPPtop'>X++</div><div class='XPP'>
[color=:blue]str[/color] val; comVariant = SysExcelWorksheet.cells().item(row, col).value(); val = comVariant.bStr();</div> В переменной val будет содержатся значение ячейки типа строка. |
|
24.06.2005, 08:48 | #9 |
Участник
|
да,но почему-то если в ячейке только цифры,то bStr() ничего не вернет
|
|
24.06.2005, 11:41 | #10 |
Участник
|
значит тип не строка, а числовой, пользуйся функциями float(), double() вместо bStr()
|
|
24.06.2005, 13:17 | #11 |
Участник
|
так в том то и трудность((( как узнать тип поля из кода? пытался typeof,typeid....подскажите,может что придумаете)
|
|
24.06.2005, 13:50 | #12 |
Участник
|
смотри в справке аксапты по COMVariant.variantType - думаю достаточно подробно описано
|
|