先日文書の構造化(Markdown)で多様なファイル形式の文書ファイルを導き出す話を書きました(編集中)。同じようなことをしている人はいるものです。以前からPythonを使ってExcelファイルを作成することはできたのですが、ある程度まとまったパッケージとしてmaelというものがPythonパッケージとして公開されています(*1。

Qiita テスト仕様書をGitで管理する: MarkdownからExcelを作る Git Markdown Excel テスト仕様書 テストシナリオ 最終更新日 2023年12月18日 投稿日 2023年03月21日/qiita.com/KenjiOtsuka/

今朝の自宅環境を計測しているデータ(CSVファイル)をMarkdown形式に変換してExcelファイルを作成してみました。手元にExcelがなくても作れます。元データは次の通りです。

[環境.csv]
日付,気温,湿度,気圧,海面更正気圧,不快指数
2025-04-08 04:10:01 ,3.29  , 99.83,1013.12,1021.16,37.95
2025-04-08 04:20:01 ,3.26  , 99.27,1013.26,1021.30,37.95
2025-04-08 04:30:02 ,3.12  , 99.26,1013.16,1021.20,37.69
2025-04-08 04:40:02 ,3.07  ,100.00,1013.24,1021.28,37.52
2025-04-08 04:50:01 ,3.06  ,100.00,1013.11,1021.16,37.50
2025-04-08 05:00:02 ,2.98  ,100.00,1013.10,1021.14,37.37
2025-04-08 05:10:02 ,3.00  ,100.00,1013.24,1021.29,37.40
2025-04-08 05:20:01 ,3.01  ,100.00,1013.19,1021.24,37.41
2025-04-08 05:30:01 ,3.03  ,100.00,1013.12,1021.16,37.45
2025-04-08 05:40:02 ,2.99  ,100.00,1013.21,1021.26,37.37

次の2つのファイルはmaelにかけるMarkdownファイルです(環境データ.md, 2.md(ほぼ同じ内容))。

[環境データ.md]
# 環境データ

##Summary

## List
 
### 日付
2025-04-08 04:10:01 
### 気温
3.29  
### 湿度
 99.83
### 気圧
1013.12
### 海面更正気圧
1021.16
### 不快指数
37.95
 
### 日付
2025-04-08 04:20:01 
### 気温
3.26  
### 湿度
 99.27
### 気圧
1013.26
### 海面更正気圧
1021.30
### 不快指数
37.95
 
### 日付
2025-04-08 04:30:02 
### 気温
3.12  
### 湿度
 99.26
### 気圧
1013.16
### 海面更正気圧
1021.20
### 不快指数
37.69
 
### 日付
2025-04-08 04:40:02 
### 気温
3.07  
### 湿度
100.00
### 気圧
1013.24
### 海面更正気圧
1021.28
### 不快指数
37.52
 
### 日付
2025-04-08 04:50:01 
### 気温
3.06  
・・・
[2.md]
# 環境データ

##Summary
これは2.mdからexcel形式に変換されたものです

## List
りすと
 
### 日付
2025-04-08 04:10:01 
### 気温
  
### 湿度
 99.83

### 気圧
1013.12

### 海面更正気圧
1021.16

### 不快指数
37.95
 
### 日付
2025-04-08 04:20:01 

### 気温
3.26  

### 湿度
 99.27

### 気圧
1013.26

### 海面更正気圧
1021.30

### 不快指数
37.95
 
### 日付
2025-04-08 04:30:02 

### 気温
3.12  

### 湿度
 99.26
・・・

maelがExcelに変換するときに使う設定ファイルです。ここで新規項目も追加できます。

[./config/columns.yml]
# This is a sample file for column conditions.

# Here is global configuration for all columns
global:
  duplicate_previous_for_blank: true

# These columns are prepended to the table.
prepend:
  No.:
    # increment column is aligned to the right.
    type: increment
    width: 5

# Here is the column conditions, which are not in prepended or appended columns .
# Columns in the table is read from the markdown files.
# So you have to specify only the columns you want to configure.
#column_conditions:
#  Categories:
#    type: list
#  Description:
#    width: 50
#  Expected:
#    width: 50
column_conditions:
#  日付:
#    type: list
  日付:
    width: 20 
  気温:
    width: 10
  湿度:
    width: 10
  気圧:
    width: 10
  海面更正気圧:
    width: 10
  不快指数:
    width: 10

# These columns are appended to the table.
append:
  結果: null
  更新日付: null
  コメント:
    width: 50
  文字列:
    type: string
    value: ""

# For column configuration, these attributes are available
#     width: number
#     type:  list or string
#     value: increment

次にできあがったExcelファイルを添付します。

次に、2.mdファイルをPandocにかけてWord文書を作成したものを添付します。まぁ、こんなこともできるんだよという例です。


*1) このサイトにもPandocの話が出てきます。ちなみに、以前の記事に結城浩氏のSimpleWEBというCプログラムの話を記しました。あのときは出力としてTeXのことしか書きませんでしたが、このSimpleWEBではTeX,RTF,RSS,HTMLの各ファイルを出力できたように記憶しています。Cマガジンに連載の一部として掲載されたのが1990年代中ほどだったか、Pandocへと続く流れですね。


Pandocを検索していたら次のような記事に出会いました。まぁ、AIというとなんか新しく感じるのかもしれませんが、別に最近始まったものでもなく。。。ここに書いていることはそれこそ30年前にはボク自身やっていたことで💦でも、こういった流れになるのは自然なことだと思います。

note AIを使うこんなご時世だからこそ、Pandocが便利だった! 18 オカキ オカキ 2024年9月18日 19:21/note.com/kakitanerakusei/