Цитата:
Сообщение от
tolstjak
Может быть написать макрос, который бы удалял это апострофы перед открытием ?
Показалось занятным, соорудил джоб:
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');
}
НО! НО... Признаться, не очень понимаю, почему у Вас не сработало предварительное форматирование как текст:
Цитата:
Сообщение от
tolstjak
столбец, в который выводится счет, делал текстовым- не помогает.
Вот, вроде всё работает:
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"); // выводим значения коррсчета БЕЗ апострофа
}
В общем, что имеем в сухом остатке? Поговорили об апострофе, короче