19.05.2014, 19:44 | #1 |
Участник
|
SpreadSheet for dummies
Доброго времени суток.
На форме имеется SpreadSheet 11.0, с установленным в Yes свойством AutoDeclaration. При загрузке формы в SpreadSheet подгружается и наполняется данными шаблон : X++: COM worksheets, sheet, newsheet, range, rows, newRows, cell; TextBuffer tb; Table1 table1; Table2 table2; int curRow, numRows; ; //загрузка шаблона GridExcel.XMLURL("S:\\testSpreadSheet.xml"); worksheets = GridExcel.Worksheets(); //выделем нужную строчку на шаблоне sheet = worksheets.Item(1); range = sheet.Range("A9:F9"); curRow = 9; //подсчитываем кол-во необходимых для вставки строк select count(recid) from table1; numRows = table1.RecId; //вставляем строки rows = sheet.Rows(); newRows = rows.Item( strfmt("%1:%2", curRow + 1,NumRows + curRow) ); //вставляем после выделенной строки newRows.Insert(); //копируем нужный формат newRows = rows.Item( strfmt("10:%1", NumRows + curRow) ); //куда будем копировать форматирование rows = range.EntireRow(); //откуда будем копировать форматирование rows.copy( newRows ); //заполняем подготовленные строки данными tb = new TextBuffer(); while select table1 { tb.setText( strfmt( "%1\t%2\t%3\t%4\t%5\t%6", table1.ItemName, table1.Qty, table1.PurchPrice, table1.PurchPriceAmount, table1.VendName, table1.Invoice) ); tb.toClipboard(); range.paste(); curRow++; range = sheet.range("A" + int2str(curRow ) + ":F" + int2str(curRow ) ); //переход на следующую строчку } tb.setText(""); //добавляем строчку Итого cell = range.item(1,1); cell.value2("Итого"); cell = range.item(1,4); cell.value2(strfmt( '=SUM(R[-%1]C:R[-1]C)', numRows)); //делаем шрифт строки жирным cell = range.Font(); cell.bold(true); НО стоит только захотеть проделать все те же операции в другом листе книги, скопированном с первого: X++: sheet.copy( sheet ); newsheet = worksheets.Item(1); //так как вставка нового листа происходит перед существующим range = newsheet.Range("A9:F9"); Цитата:
Метод "copy" в COM-объекте класса "_Range" возвратил код ошибки 0x800A03EC (<неизвестно>), который означает: <неизвестно>.
- необходимое кол-во строк на новый лист добавляется, они выделяются и их можно заполнить каким-либо значением из кода; На данный момент проблема "решена" копированием всех строк из шаблона в новый лист, а там уже аналогично вставляем новые строки и форматируем их. Новый лист добавляется с помощью X++: newsheet = worksheets.add(); Последний раз редактировалось sashanka; 19.05.2014 в 19:47. |
|
Теги |
errors, spreadsheet |
|
|