powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Передать данные с CSP в Excel ?
13 сообщений из 13, страница 1 из 1
Передать данные с CSP в Excel ?
    #35119221
Александр GAGADDDOC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !
Как передать данные с CSP в Excel ?

в VB так

Открыть
Dim objExcel As Excel.Application
Set objExcel = New Excel.Application
objExcel.Visible = True
objExcel.SheetsInNewWorkbook = 1
objExcel.Workbooks.Open ("C:\OdaKan8P\TABRNAY.xls")

Читаем с Каше
FCacheServer.VisM1.Value = ""
i = "$G(^A(1))"
FCacheServer.VisM1.Code = i
FCacheServer.VisM1.ExecFlag = 1

Записать в таблицу
With objExcel.ActiveSheet.Cells(1, 1).Value = FCacheServer.VisM1.Value

Закрыть
objExcel.Quit
Set objExcel = Nothing
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35119688
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приятная сторона Excel состоит в том что он прекрасно понимает HTML
поэтому со стороны сервера достаточно передать
такой CSP файл:

<script language="Cache" method="OnPreHTTP" arguments="" returntype="%Boolean">
set %response.ContentType = "application/x-msexcel"
do %response.SetHeader("Content-Disposition","attachment;excel.xls")
set %response.Expires = "Thu, 01 Apr 2003 00:00:00 GMT"
Quit 1
</script>
<html>
<body>
<table><tr><td>
...
</td></tr></table>
</body>
</html>

у меня на страницах таблички выводятся в ListView, над каждой табличкой кнопка которая собирает данные конкретной таблички в xml, передаёт на сервер а затем
window.open("excel.csp?act=get&sessionid="+sessionid)
excel.csp по пользователю в сессии отрисовывает данные ранее которые пришли в xml в формате html TABLE и отдаёт клиенту.
Если интересно вышлю код кнопки и код excel.csp
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35120043
Александр GAGADDDOC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если можна вышлите на docadd@narod.ru.

А как в Excel с CSP вставить картинку ?
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35121560
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Можно еще через буфер обмена и ActiveX.

Но мы сейчас переходим на linux, openoffice и firefox, которые так не умеют, так
что через content-type правильнее.

=Сергей Шутов
ООО Димас, Хабаровск


//*** Excel ***********************************************

// простое выравнивание строк и столбцов
// shu 031214, 031229-orientation
// namberFormat - столбцы в Excele для которых надо указать числовой формат.
// указывается в формате "B:B;D:E"
function PasteToExcel(str, lengthA, orientation,fontName,namberFormat,addExecute)
{
try
{
if ((lengthA == undefined) || (lengthA == null) || (lengthA == '')) {
lengthA = 12;
}
if ((orientation == undefined) || (orientation == null) || (orientation ==
'')) {
orientation = 1;
}

if ((str != null) && (str != undefined) && (str != ""))
{
var bool = window.clipboardData.setData("Text", str);
if (bool = false) { return; } //#
var ExcelApp = new ActiveXObject("Excel.Application");
var WorkBook = ExcelApp.WorkBooks.Add;
ExcelApp.ActiveSheet.Paste;
ExcelApp.Selection.VerticalAlignment = 1;
ExcelApp.Selection.ColumnWidth = "50";
ExcelApp.Selection.Interior.ColorIndex = 0;
// убираем подчеркивания для ссылок
ExcelApp.Selection.Font.Underline = false;
if (!((fontName == undefined) || (fontName == null) || (fontName == '')))
ExcelApp.Selection.Font.Name = fontName;
else {
ExcelApp.Selection.Font.Name = 'Courier New';
}
// Ставим числовой формат в нужных столбцах
if (!((namberFormat == undefined) || (namberFormat == null) || (namberFormat
== ''))) {
for (j=1; j<=Length(namberFormat,";"); j++) {
ExcelApp.ActiveSheet.Columns(Piece(namberFormat,";",j)).Select;
ExcelApp.Selection.NumberFormat = "#,##0.00";
}

}
ExcelApp.Columns("A:A").Select;
ExcelApp.Selection.ColumnWidth = lengthA;
ExcelApp.Columns("B:Z").Select;
ExcelApp.Selection.Rows.AutoFit;
ExcelApp.Columns("B:Z").Select;
ExcelApp.Selection.Columns.AutoFit;
ExcelApp.ActiveSheet.PageSetup.Orientation = orientation;
// Устанавливаем ширину страницы
ExcelApp.ActiveSheet.PageSetup.LeftMargin = 25
ExcelApp.ActiveSheet.PageSetup.RightMargin = 25
ExcelApp.ActiveSheet.PageSetup.Zoom = false;
ExcelApp.ActiveSheet.PageSetup.FitToPagesWide = 1;
ExcelApp.ActiveSheet.PageSetup.FitToPagesTall = 999;
if((addExecute != null) && (addExecute != undefined) && (addExecute != "")) {
eval(addExecute);
}
ExcelApp.ActiveSheet.Range("A1").Select;
ExcelApp.ActiveSheet.Refresh;
ExcelApp.Visible = true;
}
}
catch(e) { alert(e.description); }
}
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35121567
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist
А OpenOfficce открывается внутри браузера при получении такой страницы ?

Ворд то вроде через OLE это делает ... или я что то запамятывал

PS: Всегда нужно иметь запасной путь
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35121574
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может открыться и внутри, но мы всегда отдельным окном открываем. Чтобы можно
было нормально сохранить, напечатать и т.д. в привычном пользователю редакторе.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35124314
Александр GAGADDDOC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !

ВСЕМ СПАСИБО !!!

Вопрос снят !
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35389741
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто-то из коллег в курсе, почему при открытии экселя через window.open(), когда в открываемом файле стоят заголовки, что он - Эксель, происходит:
- открытие пустой страницы ИЕ
- открытие Экселя
Т.е. в итоге появляется лишняя пустая страница Эксплорера.

Конечно, если закомментировать в OnPreHTTP Disposition, работает нормально:
s %response.ContentType = "application/x-msexcel"
//d %response.SetHeader("Content-Disposition","attachment;excel.xls")

Причем фишка эта, похоже, связана с настройками клиентского компьютера... Вот только что это за настройки, не понятно...
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35389742
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогло прямое указание на _self при открытии окна...
Однако не уверен, что везде это будет работать корректно.
window.open("zen.PrintExcel.cls?DataFrom="+escape(data),"_self");
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35390997
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если делать через html, возможны проблемы с кодировкой, побороть их не получилось.

Зато офис старших версий (2003 например) понимает формать xml, там своя структура должна быть, по каким ключевым словам искать не помню. Но возможностей больше, например можно сделать несколько листов в документе.
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35392462
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Если делать через html, возможны проблемы с кодировкой, побороть их не получилось.

Зато офис старших версий (2003 например) понимает формать xml, там своя структура должна быть, по каким ключевым словам искать не помню. Но возможностей больше, например можно сделать несколько листов в документе.

Берете Excel создаете документ на нескольких листах - сохраняете в виде html - смотрите что она написал...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<![endif]><!--[if gte mso 9]><xml>
 <x:ExcelWorkbook>
  <x:ExcelWorksheets>
   <x:ExcelWorksheet>
    <x:Name>Лист1</x:Name>
    <x:WorksheetSource HRef="Книга1.files/sheet001.htm"/>
   </x:ExcelWorksheet>
   <x:ExcelWorksheet>
    <x:Name>Лист2</x:Name>
    <x:WorksheetSource HRef="Книга1.files/sheet002.htm"/>
   </x:ExcelWorksheet>
   <x:ExcelWorksheet>
    <x:Name>Лист3</x:Name>
    <x:WorksheetSource HRef="Книга1.files/sheet003.htm"/>
   </x:ExcelWorksheet>
  </x:ExcelWorksheets>
  <x:Stylesheet HRef="Книга1.files/stylesheet.css"/>
  <x:ActiveSheet> 2 </x:ActiveSheet>
  <x:ProtectStructure>False</x:ProtectStructure>
  <x:ProtectWindows>False</x:ProtectWindows>
 </x:ExcelWorkbook>
</xml><![endif]-->

Просто html нужно немного по другому генерить вот и все
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35394210
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
интересно а есть ли функция в Cache которая сформирует такой выходной файл
что бы потом его открыть с помощью Exсel ???
какие мысли?
...
Рейтинг: 0 / 0
Передать данные с CSP в Excel ?
    #35401373
Mammonth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007интересно а есть ли функция в Cache которая сформирует такой выходной файл
что бы потом его открыть с помощью Exсel ???
какие мысли?
CSV ему отдавайте да и все :)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Передать данные с CSP в Excel ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]