21.04.2006, 14:46 | #1 |
Участник
|
Получение данных из файла Excel
Застрял на элементарной задаче: есть какой-либо xls-файл, надо в переменную str прочитать его ячейку, ну, например, "A1". В ComExcelDocument_RU такого метода нету (get...). Может кто подскажет метод?! Через COM делать неохото. Возможно это уже обсуждалось, но я не смог найти... |
|
21.04.2006, 15:05 | #2 |
Участник
|
X++: str strValue(int _row, int _col) { COM c = this.cell(_row, _col); COMVariant cv = c.value(); switch (cv.variantType()) { case COMVariantType::VT_BSTR: return cv.bStr(); case COMVariantType::VT_R8: return num2str(cv.double(),-1,0,0,0); } return ''; } |
|
21.04.2006, 15:08 | #3 |
Участник
|
X++: COM cell(int _row, int _col) { int ii; COM cellValue; ; cellValue = worksheet.cells(); ii = 0; SysCOM::variant2COM(cellValue, cellValue.item(_row, _col)); return cellValue; } |
|
21.04.2006, 15:15 | #4 |
SAP
|
Вот ссылка котороя помогла мне в этом разобратся.
Axapta программирует Excel на VBA |
|
|
За это сообщение автора поблагодарили: Gustav (1). |
21.04.2006, 15:18 | #5 |
Member
|
Цитата:
Сообщение от Zeratul
...
Через COM делать неохото. ...
__________________
С уважением, glibs® |
|
21.04.2006, 15:20 | #6 |
Участник
|
Цитата:
Сообщение от abv2703
COM cell(int _row, int _col)
{ int ii; COM cellValue; ; cellValue = worksheet.cells(); ii = 0; SysCOM::variant2COM(cellValue, cellValue.item(_row, _col)); return cellValue; } |
|
21.04.2006, 15:30 | #7 |
Участник
|
X++: public class ReadFromExcelFile { COM worksheet; } void loadFromFile(Filename _fileName) { ComExcelDocument_RU exl = new ComExcelDocument_RU(); ; if (! exl.open(_fileName)) throw error('?????? ??? ???????? ????? ' + _fileName); exl.visible(false); worksheet = exl.getWorkSheet(1); } |
|
21.04.2006, 16:02 | #8 |
Модератор
|
Можно через ODBC.
Объясните начинающему как загрузить данные из Excel? Смотрел форум, но не нашел. Я выкладывал подробный пример. С Уважением, Георгий |
|
21.04.2006, 23:41 | #9 |
Участник
|
а еще можно через CSV и класс CommaIO
|
|
26.04.2006, 14:17 | #10 |
Участник
|
Тоже работает, месяц назад думал над этим
X++: fileName = fileNameControl.text(); fileNameControl.text(fileNameTrim(fileName)); excel = new COM('Excel.Application'); wbs = excel.workbooks(); wb = wbs.open(fileName); wss = wb.WorkSheets(); ws = wss.Item("Акт"); while(cycleFlag == "zyclus") { //cell A r = ws.range("A"+int2str(counter1)); temp = r.value2(); if(temp.toString() != "VT_EMPTY") numPos = temp.double(); else { cycleFlag = "nicht zyclus"; break; } } |
|
27.04.2006, 10:23 | #11 |
Участник
|
лучше и быстрее чем через одбс не получится.
через ком бывают проблемы(последний раз наблюдалось в 2.5, потом не смотрел) вываливается через определенное кол-во загруженных строк - но позволяет выбрать файл |
|
27.04.2006, 15:00 | #12 |
Участник
|
Ну, "до кучи". Импорт из EXCEL через буфер обмена
PHP код:
Недостатки - буфер обмена возвращает данные только в символьном виде. Переводить в нужный тип данных придется вручную |
|
|
За это сообщение автора поблагодарили: konopello (1). |
|
|