30.03.2011, 11:30 | #3 |
Модератор
|
Для Ax 2009 был случай вывода русский слов в не верной кодировке.
Вставка в Excel из TextBuffer. Кодировка Ниже исправлена в коде исправлена одна строка на XLSWorkSheet.pasteSpecial(0); Код: public void insertText(BookMark _bookMark, TextBuffer _text, int _workSheet = 1) { COM XLSWorkSheet, XLSrange; TextBuffer tempBuffer; // To store clipboard contents int nextI, maxI = 3; ; // Если содержимое TextBuffer вообще не введено, то PastSpecial даст ошибку, // а если заведена пустая строка, то нет смысла делать PastSpecial if (! _text.size()) { return; } // Initializing XLSWorkSheet object XLSWorkSheet = this.getWorkSheet(_workSheet); if (!XLSWorkSheet) { throw error("@DIS6043"); } // Initializing XLSRange object XLSrange = this.findRange(_bookMark,_workSheet); if (!XLSrange) { throw error("@SYS27391"); } XLSrange.select(); for (nextI = 1; nextI <= maxI; nextI++) { try { // Storing clipboard contents tempBuffer = new TextBuffer(); tempBuffer.fromClipboard(); // Preparing text to be inserted _text.toClipboard(); // Inserting text from clipboard ///ГЛЮК XLSWorkSheet.pasteSpecial(1); // 1 - "Text only" mode XLSWorkSheet.pasteSpecial(0); // Restoring clipboard contents tempBuffer.toClipboard(); // В случае успеха, прерываю цикл break; } catch(Exception::Error) { // в случае ошибки удаляю последнюю строку infolog, // которая генерится автоматически ошибкой COM if (infolog.line()) { infolog.clear(infolog.line()-1); } // предпринимаю очередную попытку сделать вставку через буфер } } // for (nextI) // Если выход из цикла for произошел "штатно", то значение счетчика будет больше максимально допустимого значения if (nextI > maxI) { throw error("Ошибка при копировании данных через буфер обмена."); } }
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
|