Excel 방안지를 지원하는 기술 2016

POI를 사용한 Excel 문서의 출력은 시스템 엔지니어에게는 일상 차반사, 장난감 사이사이입니다.

Excel 방안지를 지원하는 기술



takezoen 선생님에 의한 2015년판은 이쪽이 됩니다.


여기에 소개된 S식에서 Excel 방안지를 출력하는 라이브러리 axebomber-clj는 여기를 참조하십시오.

특필해야 할 것은 axebomber-clj에서는 Excel에 흔한 문자 조각이 일어나지 않는다는 점입니다. 원래 Excel 방안지는 입력 문자열이 자동 개행되지 않는 제약을 마련해, 이용자가 의도적인 위치에서 개행을 제어하기 위해서 발명된 포맷입니다. 그러나 그 특이한 외형이 재앙하고 단순히 경원되는 존재에 머물고 있습니다. axebomber-clj는 문자 너비와 셀 너비를 계산하고 끊어지지 않는 위치에서 자동으로 줄 바꿈합니다. 이것에 의해, Excel 방안지의 문자 끊기 어려움을 살리면서, 번거로움을 지우고 있는 것입니다.
(render sheet {:x 2 :y 12 :data-width 6}                                                                      
        "長い文字列は自動的に改行されます。非常に便利ですね!")

문자열이 길어도… 아래와 같이, 정해진 사이즈를 넘으면 자동으로 개행되는 것입니다.



자동 개행을 위해



등폭 폰트라면 아직 간단합니다만, 보기 좋게 하는 Excel 방안지는 역시 프로포셔널을 사용한 것입니다.
(defn string-width [s font]
  (if (> (.length (str s)) 0)
    (let [layout (TextLayout. (.getIterator (make-attributed-string (str s) font))
                            font-render-context)]
      (.. layout getBounds getWidth))
    0))

java.awt.TextLayout 를 사용해, 실제의 폰트로 캐릭터 라인폭을 계산해, 셀폭과 비교하면서 개행을 넣어 가는 것으로, 자동 개행을 실현할 수 있습니다.

정확한 방안 만들기



역사적 Excel 방안지는 셀이 정사각형인 것이 조건이지만 셀 폭은 글꼴 크기에 따라 달라집니다.

POI를 사용해보기/가로폭의 설정 http://irof.hateblo.jp/entry/20100316/p1 에 가로폭의 어려움은 설명되어 있습니다만, 시행착오의 결과, 이하와 같이 폰트 사이즈에 의해, 오프셋(offset)를 불규칙하게 변화시키면(자) 정사각형의 셀이 얻을 수 있게 되었습니다.

(def font-offset
  { 8 200,
    9 200,
   10 200,
   11 160,
   12 160,
   13 200,
   14 180,
   15 180,
   16 160,
   17 160,
   18 160,
   19 180,
   20 160,
   22 160,
   24 140,
   26 160,
   28 150,
   36 140})

(defn to-grid [sheet]
  (let [font-size (.. sheet
                      getWorkbook
                      (getFontAt (short 0))
                      getFontHeightInPoints)]
    (doseq [col-index (range 256)]
      (.setColumnWidth sheet col-index (+ (get font-offset font-size 180) (* 256 2)))))
  sheet)

excelebration



excelebration은 axebomber-clj의 명령 행 래퍼입니다.

htps : // 기주 b. 코 m / 가와시마 / 에 x 세이 b 라치온 (아직 문서가 없습니다 )

납품용의 표지를 출력하거나, 템플릿을 기초로 방안지를 출력하는 것이 간단하게 할 수 있게 됩니다.

Markdown에서 Excel 방안지로



Markdown에서 설계서를 쓴다는 야망을, 시스템 엔지니어의 절반은 가지고 있지만, Excel 방안지 제국의 힘에 굴복해, 히라스라 매스 눈을 메우는 "설계"작업을 하고 있다,라고 듣습니다.

그런 경우에는 excelebration을 사용합시다.



이런 Markdown이...
lein run -- -i test.md -o test.xlsx

커맨드 한발로, Excel 방안지에 조변합니다.



요약



아직 S 공식의 Excel 방안지 출력은 이미 실용화되었지만 Markdown의 Excel 방안지는 여전히 앞으로의 기술입니다. 당연히 jagrid 을 사용한 HTML 방안지에의 출력도 시야에 넣고 있습니다.
Excel 방안지를 지원하는 기술이 2016년 어떤 진보를 이루는지 기대하네요!

좋은 웹페이지 즐겨찾기