Тема: Zinc FAQ
Показать сообщение отдельно
Старый 27.11.2007, 23:38
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 8  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Экспорт в Word

пример работы с VBScript. В системе должен быть установлен Word, чтобы все работало.
Код:
//каждую строку тела формируемого скрипта не забываем заканчивать 
//символом переноса строки.
// имитация динамического массива данных; 
//например, массив - результат выборки из БД MySql
var dataArray:Array = new Array();
for (var i = 0; i <= 100; i++) {
	dataArray.push({field1:i + " a", field2:i + " b", field3:i + " c", field4:i + " d", field5:i + " e", field6:i + " f", field7:i + " g", field8:i + " h"});
}
//формируем заголовочную строку vb-скрипта:
//создаем документ, таблицу, элеметарное форматирование, используя
// VBA-объект Word.Application
var vbcode:String = "";
vbcode += "Set objWord = CreateObject(\"Word.Application\")\r";
vbcode += "objWord.Visible = True\r";
vbcode += "Set objDoc = objWord.Documents.Add()\r";
vbcode += "objWord.Activate()\r";
vbcode += "objDoc.Select\r";
vbcode += "objDoc.Application.Selection.PageSetup.Orientation = 1\r";
vbcode += "objDoc.Application.Selection.PageSetup.LeftMargin = 30\r";
vbcode += "Set objRange= objDoc.Range()\r";
vbcode += "objDoc.Tables.Add objRange,1,8\r";
vbcode += "Set objTable = objDoc.Tables (1)\r";
vbcode += "objTable.Range.Style = \"Сетка таблицы\"\r";
for (var i = 1; i <= 8; i++) {
	vbcode += "objTable.Columns(" + i + ").Width =80\r";
}
vbcode += "objTable.Rows.Height = 16\r";
vbcode += "objTable.Rows.Add ()\r";
for (var i = 1; i <= 8; i++) {
	vbcode += "objTable.Cell(1, " + i + ").Range.Text = \"Колонка " + i + "\"\r";
}
vbcode += "objDoc.Tables (1).Rows(1).HeadingFormat = True\r";
//сохраняем на диск
mdm.FileSystem.saveFile(mdm.System.Paths.appData + "toWord.vbs", vbcode);
vbcode = "";
//формируем тело скрипта, заполняющего таблицу с помощью команд VBA
for (var i = 0; i <= 100; i++) {
	vbcode += "objTable.Rows.Add ()\r";
	for (var j = 1; j <= 8; j++) {
		vbcode += "objTable.Cell(" + (i + 2) + ", " + j + ").Range.Text = \"" + dataArray[i]["field" + j] + "\"\r";
	}
	//сохраняем на диск построчно
	mdm.FileSystem.appendFile(mdm.System.Paths.appData + "toWord.vbs", vbcode);
	vbcode = "";
}

//запускаем скрипт на выполнение
	mdm.System.exec(mdm.System.Paths.appData + "toWord.vbs");