Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Передать данные с CSP в Excel ? / 13 сообщений из 13, страница 1 из 1
08.02.2008, 11:42
    #35119221
Александр GAGADDDOC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать данные с CSP в Excel ?
Добрый день !
Как передать данные с 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
08.02.2008, 13:19
    #35119688
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать данные с CSP в Excel ?
Приятная сторона 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
08.02.2008, 14:32
    #35120043
Александр GAGADDDOC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать данные с CSP в Excel ?
Если можна вышлите на docadd@narod.ru.

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

Можно еще через буфер обмена и 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
09.02.2008, 07:45
    #35121567
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать данные с CSP в Excel ?
logist
А OpenOfficce открывается внутри браузера при получении такой страницы ?

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

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

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

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

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

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

Зато офис старших версий (2003 например) понимает формать xml, там своя структура должна быть, по каким ключевым словам искать не помню. Но возможностей больше, например можно сделать несколько листов в документе.
...
Рейтинг: 0 / 0
25.06.2008, 08:39
    #35392462
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать данные с CSP в Excel ?
Блок А.Н.Если делать через 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
25.06.2008, 16:50
    #35394210
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать данные с CSP в Excel ?
интересно а есть ли функция в Cache которая сформирует такой выходной файл
что бы потом его открыть с помощью Exсel ???
какие мысли?
...
Рейтинг: 0 / 0
30.06.2008, 08:52
    #35401373
Mammonth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать данные с CSP в Excel ?
Ymka2007интересно а есть ли функция в Cache которая сформирует такой выходной файл
что бы потом его открыть с помощью Exсel ???
какие мысли?
CSV ему отдавайте да и все :)
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Передать данные с CSP в Excel ? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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