|
24.02.2011, 15:43 | #1 |
Участник
|
Цитата:
Сообщение от Gustav
Так, а чего? Он же никому не мешает - ни сортировке, ни обратной выгрузке куда-либо, ни работе функции ДЛСТР и т.п...
Ну, конечно, если хочется себя занять, то займите - никто Вас отговаривать не будет. Но кончится тем, что Вы поменяете ComExcelDocument_RU на выгрузку с использованием ADO и CopyFromRecordset - там этой проблемы нет - не эстетично - при обработке такого столбца (если по этим столбцам идет сравнение) придется избавляться от этого апострофа Может быть написать макрос, который бы удалял это апострофы перед открытием ?
__________________
Александр |
|
24.02.2011, 16:40 | #2 |
Moderator
|
Его не видно на рабочем листе. Видно только в строке редактирования текущей ячейки. Если это уж так раздражает, ну, сделайте активной какую-нибудь другую ячейку, не из этой колонки перед предъявлением таблицы пользователю. К слову сказать, младший брат Excel - OWC Spreadsheet всегда автоматически добавляет апостроф к строке, если она может быть интерпретирована как число - независимо от того, поставили ли вы его сами или отформатировали ячейку как текст.
Цитата:
Цитата:
P.S. Методом Range.PrefixCharacter можно найти, если таки соберетесь искать. Последний раз редактировалось Gustav; 24.02.2011 в 16:56. |
|
24.02.2011, 17:01 | #3 |
Участник
|
Цитата:
апостроф в коде я проставляю следующим образом: account1 = strfmt("`%1", bankGroup.BankCorrAccount_RU); если Вы делаете по другому, пожалуйста напишите. Может быть из-за того, что неправильно ставлю апостроф у меня в экселе все видно?
__________________
Александр |
|
24.02.2011, 17:21 | #4 |
Moderator
|
Да-с, возник у нас терминологический казус Я назвал даму сэром, в смысле одинарную кавычку - апострофом и ввел Вас в заблуждение. Но с другой стороны ж в моем значении в самом начале указана именно одинарная кавычка. Ее и надо было попробовать...
В общем, ладно. У Вас не то, конечно. У Вас - символ с кодом 96, а надо тот, который 39. |
|
24.02.2011, 19:10 | #5 |
Moderator
|
Цитата:
X++: { ComExcelDocument_RU doc = new ComExcelDocument_RU(); COM xlApp; COM wbook; COM activeSheet; COM range; COMEnum2Object cellCollection; COM cell; COMVariant prefChar; ; doc.NewFile('',true); wbook = doc.getComDocument(); xlApp = wbook.Parent(); activeSheet = xlApp.ActiveSheet(); range = activeSheet.Range('A1:A100'); range.Value2("'30101810100000000859"); // 1. выводим значения с ведущим апострофом (одинарной кавычкой) print 'Загляните в окошко Excel'; pause; range.NumberFormat('@'); // 2. форматируем заполненный диапазон как Текст cellCollection = new COMEnum2Object(range); // 3. перебирая ячейки диапазона, удаляем ведущий апостроф, если находим for (cell = cellCollection.getFirst(); cell; cell = cellCollection.getNext()) { prefChar = cell.PrefixCharacter(); if (prefChar.bStr() == "'") { cell.Value2(cell.Value2()); // "удаляем" = переписываем значение само на себя } } info('Еще раз загляните в окошко Excel'); } Вот, вроде всё работает: X++: { ComExcelDocument_RU doc = new ComExcelDocument_RU(); COM xlApp; COM wbook; COM activeSheet; COM range; ; doc.NewFile('',true); wbook = doc.getComDocument(); xlApp = wbook.Parent(); activeSheet = xlApp.ActiveSheet(); range = activeSheet.Range('A1:A100'); range.NumberFormat('@'); // предварительное форматирование КАК ТЕКСТ ячеек вывода коррсчета range.Value2("30101810100000000859"); // выводим значения коррсчета БЕЗ апострофа } |
|
|
За это сообщение автора поблагодарили: tolstjak (1). |
25.02.2011, 08:16 | #6 |
Участник
|
Большое спасибо за очень развернутый ответ. Все понятно.
__________________
Александр |
|
26.05.2011, 16:51 | #7 |
Участник
|
Заработало
Забыл отписаться, все заработало через COM объект RecordSet, теперь для построения отчетов который выводятся в Excel, нет необходимости ставить сей продукт от MS, на каждую клиентскуб тачку.....
если интересно позже выложу подробности. |
|