Redmine に表を書きたい
Redmine では wiki記法(Textile記法)で、表を書くことができるが、そのもととなるデータはExcelやLibreOffice Calc 等の表計算ソフトで作成していると思う。(合計の計算や分析が楽だし)
出来上がった表データを wiki記法に変換するのが手作業では面倒だし、転記ミスも出そうなので、マクロを書いた。 結合したセルや、セル内に改行があるもの、色付けなどには未対応ですが、そこそこ楽にはなりそうなので、公開します。
使い方
マクロのソースをマイマクロのStandard、Module1などに書いておき、変換したいセル範囲を選択してからマクロを実行させてください。
マクロは選択範囲から右に2つめの列に一行ずつ変換後の文字列を書き込みます。
マクロが終了したら、出力された文字列を選択、コピー&ペーストで wiki に書き込み、適当に補正してください。
MarkDown にするには
wiki(Textile) じゃなく、Markdown にしたい場合は、ソースのアラインメントに関する部分(>. <.
)と、ヘッダーに関する接頭文字(_.
)を付けないように修正して、出力された文字列にアラインメント行を追加するなどしてください。
マクロのソース(BASIC)
calc2redmine.bas
REM ***** BASIC *****
Sub Main
Dim First As Boolean
Dim str1 As String
Dim oCtrl As Object
DIm oSheet As Object
Dim rangeAdd As Object
Dim Row, sRow, eRow, Col, sCol, eCol, oCell, oCall2 As Object
oCtrl = ThisComponent.CurrentController
oSheet = oCtrl.ActiveSheet
rangeAdd = ThisComponent.CurrentSelection.RangeAddress
sRow = rangeAdd.StartRow
eRow = rangeAdd.EndRow
sCol = rangeAdd.StartColumn
eCol = rangeAdd.EndColumn
First = True
For Row = sRow To eRow
str1 = ""
For Col = sCol To eCol
oCell = oSheet.getCellByPosition(Col, Row)
If First Then '1行目はタイトルとする(太字で中央寄せ)
str1 = str1 & "|_. " & oCell.String
Else
Select Case oCell.Type '数値だったら右寄せとする
Case 1
str1 = str1 & "|>. " & oCell.String
Case Else
str1 = str1 & "|<. " & oCell.String
End Select
End If
Next
First = False
str1 = str1 & "|"
oCell2 = oSheet.getCellByPosition(Col+1, Row)
oCell2.String = str1
Next
End Sub