【vte.cx 응용】 23. 서버 측 Javascript를 사용한 엑셀 출력 방법

이번에는 서버 측 javascript를 사용한 엑셀 파일의 출력과 그 쓰는 법에 대해 설명합니다.

vtecxblank를 최신 상태로 유지



Xls 출력은 이전 버전의 vtecxblank 프로젝트에서는 작동하지 않습니다.
죄송합니다만, vtecxblank 프로젝트를 최신으로 해 주시도록 잘 부탁드립니다.
(2015/12/18 포함)

XLS 샘플 소스



엑셀 파일을 출력할 때는 템플릿이 되는 XLS 파일과 리소스 데이터가 필요합니다.
XLS 파일로 형식이 되는 템플릿을 작성해, 그 템플릿에 자원 데이터의 값을 대입해 출력하는 이미지가 됩니다.

이 리소스 데이터를 xls로 출력한다고 가정합니다.

/d/hoge(자원 데이터)
    {
        feed: {
            entry:[{
                title: 'Hello World',
                link: [{
                    ___href: '/hoge',
                    ___rel: 'self'
                }],
                id: '/hoge,1'
            }]
        }
    }

리소스 데이터의 title 항목인 Hello World를 XLS로 출력하려면 다음과 같은 파일을 템플릿으로 준비하십시오.

hello_world.xls(XLS 템플릿)


표시할 항목을 셀에 "${항목 이름}"으로 지정합니다.
이렇게 하면 제목 항목인 Hello World를 셀에 포함할 수 있습니다.

템플릿의 엑셀 파일을 저장할 위치



템플릿의 HTML은 vtecxblank 프로젝트의 다음 위치에 배치하십시오.

파일의 위치
   /app/xls
      hello_world.xls

서버 측 자바 스크립트에서 ReflexContext.toXls () 실행



엑셀을 작성해 출력하기 위해서는 서버측 javascript가 필요합니다.
ReflexContext.toXls() 메서드를 사용하여 엑셀을 출력할 수 있습니다.

다음 서버측 javascript를 준비하십시오.

test.xls.js(서버측 javascript)
module.exports = function () {

  // リソースデータ取得
  var data = ReflexContext.getEntry('/hoge');

  // エクセル出力
  ReflexContext.toXls(data, '/xls/hello_world.xls', 'test.xls');

};

ReflexContext.toXls 메서드의 인수는 다음과 같습니다.
    ReflexContext.toXls({リソースデータ}, {HTMLのURL}, {XLSのファイル名(拡張子含む)})

배포를 실행하고 실제로 액세스해 봅니다.


  • hello_world.xls (템플릿 XLS)
  • test.xls.js(서버측 javascript)

  • app 아래에 배치한 후 배포를 수행한 후 아래 URL로 액세스해 보세요.

    액세스 URL
       /s/test.xls
    

    그러면 XLS가 표시 (또는 다운로드)된다고 생각합니다.

    글로벌 output_xls.js 만들기



    하나의 XLS 파일에 대해 하나의 서버 측 자바 스크립트를 만드는 것은 무언가와 번거로운 경우가 있습니다. 그러한 경우는 xls 작성용의 공통적인 서버 사이드 javascript를 작성하면 좋다고 생각합니다.

    Xls 작성을 위한 서버측 javascript
    GET /s/output_xls?data=/hoge&template=/xls/person_template.xls&name=test.xls
    
    // output_xls.js
    module.exports = function () {
    
      var querystring = ReflexContext.querystring();
    
      // 各パラメータ取得
      var data_path = querystring.split('&')[0].replace('data=', '');
      var template_path = querystring.split('&')[1].replace('template=', '');
      var xls_name = querystring.split('&')[2].replace('name=', '');
    
      // リソースデータ取得
      var data = ReflexContext.getEntry(data_path);
    
      ReflexContext.toXls(data, template_path, xls_name);
    
    };
    

    이렇게 하면 인수에 의해 생성되는 엑셀을 변경할 수 있습니다.

    이상으로 엑셀 출력의 설명을 종료합니다.

    좋은 웹페이지 즐겨찾기