|
|
#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 |
|
|
|