# xlsx2csv-mergefill
Excelファイル(.xlsx)を、データ処理に適したCSV形式へ変換するPythonライブラリです。
結合セルの補完や文字コード(cp932)対応により、業務システムへのデータ取り込みを容易にします。
## 特徴
* **結合セルの自動補完** — 結合領域を左上セルの値で埋め、データ欠損を防止
* **cp932形式での出力** — Shift_JIS互換のCSVを出力(業務システムでの互換性重視)
* **複数シートの一括変換** — Excelブック内の全シートを安全なファイル名で自動出力
## インストール
```bash
pip install xlsx2csv-mergefill
```
## 使い方
### 1. ExcelファイルをCSVに一括変換
```python
from xlsx2csv_mergefill import convert_file
convert_file("input.xlsx", "output")
```
→ 複数シートの場合は `<指定パスの拡張子なし>_シート名.csv` という形式で同ディレクトリに複数出力されます。単一シートの場合は第2引数で指定したパスに1ファイルをそのまま出力します(拡張子の自動付与は行いません)。
### 2. 特定シートをPythonリストとして読み込み
```python
from xlsx2csv_mergefill import read_sheet
rows = read_sheet("input.xlsx")
```
### 3. 全シートを辞書形式で読み込み
```python
from xlsx2csv_mergefill import read_workbook
data = read_workbook("input.xlsx")
```
**引数**
* `input_path`: 入力Excelファイルのパス
* `output_path`: 出力先のパス。複数シートの場合はプレフィックスとして扱われ、`<指定パスの拡張子なし>_シート名.csv` を同ディレクトリに出力します。単一シートの場合はこのパスにそのまま出力します(例:`out.csv` を指定すると `out.csv` を出力)。
**戻り値**
* 成功時に `0` を返します。
**例外**
* `FileNotFoundError` などの例外を送出することがあります。
## 制限事項
* 入力形式は `.xlsx` のみ対応(`.xls` 非対応)
* 出力形式は `cp932` / カンマ区切り固定
* 数式セルは計算済みの値として取得されます
## ライセンス
本プロジェクトはMITライセンスの下で公開されています。詳細は[LICENSE](LICENSE)ファイルをご覧ください。
Raw data
{
"_id": null,
"home_page": null,
"name": "xlsx2csv-mergefill",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "excel, csv, converter, merged-cells, cp932, shift-jis, japanese",
"author": "abachan",
"author_email": "aiba1114@cl.cilas.net",
"download_url": "https://files.pythonhosted.org/packages/eb/b5/6c3302d3b92c2dd93b3694558fd3ad62cb927844fccc3664dabd2512261c/xlsx2csv-mergefill-1.0.1.tar.gz",
"platform": null,
"description": "# xlsx2csv-mergefill\r\n\r\nExcel\u30d5\u30a1\u30a4\u30eb\uff08.xlsx\uff09\u3092\u3001\u30c7\u30fc\u30bf\u51e6\u7406\u306b\u9069\u3057\u305fCSV\u5f62\u5f0f\u3078\u5909\u63db\u3059\u308bPython\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002\r\n\u7d50\u5408\u30bb\u30eb\u306e\u88dc\u5b8c\u3084\u6587\u5b57\u30b3\u30fc\u30c9\uff08cp932\uff09\u5bfe\u5fdc\u306b\u3088\u308a\u3001\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u30c7\u30fc\u30bf\u53d6\u308a\u8fbc\u307f\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002\r\n\r\n## \u7279\u5fb4\r\n\r\n* **\u7d50\u5408\u30bb\u30eb\u306e\u81ea\u52d5\u88dc\u5b8c** \u2014 \u7d50\u5408\u9818\u57df\u3092\u5de6\u4e0a\u30bb\u30eb\u306e\u5024\u3067\u57cb\u3081\u3001\u30c7\u30fc\u30bf\u6b20\u640d\u3092\u9632\u6b62\r\n* **cp932\u5f62\u5f0f\u3067\u306e\u51fa\u529b** \u2014 Shift_JIS\u4e92\u63db\u306eCSV\u3092\u51fa\u529b\uff08\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u3067\u306e\u4e92\u63db\u6027\u91cd\u8996\uff09\r\n* **\u8907\u6570\u30b7\u30fc\u30c8\u306e\u4e00\u62ec\u5909\u63db** \u2014 Excel\u30d6\u30c3\u30af\u5185\u306e\u5168\u30b7\u30fc\u30c8\u3092\u5b89\u5168\u306a\u30d5\u30a1\u30a4\u30eb\u540d\u3067\u81ea\u52d5\u51fa\u529b\r\n\r\n## \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n\r\n```bash\r\npip install xlsx2csv-mergefill\r\n```\r\n\r\n## \u4f7f\u3044\u65b9\r\n\r\n### 1. Excel\u30d5\u30a1\u30a4\u30eb\u3092CSV\u306b\u4e00\u62ec\u5909\u63db\r\n\r\n```python\r\nfrom xlsx2csv_mergefill import convert_file\r\n\r\nconvert_file(\"input.xlsx\", \"output\")\r\n```\r\n\r\n\u2192 \u8907\u6570\u30b7\u30fc\u30c8\u306e\u5834\u5408\u306f `<\u6307\u5b9a\u30d1\u30b9\u306e\u62e1\u5f35\u5b50\u306a\u3057>_\u30b7\u30fc\u30c8\u540d.csv` \u3068\u3044\u3046\u5f62\u5f0f\u3067\u540c\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u8907\u6570\u51fa\u529b\u3055\u308c\u307e\u3059\u3002\u5358\u4e00\u30b7\u30fc\u30c8\u306e\u5834\u5408\u306f\u7b2c2\u5f15\u6570\u3067\u6307\u5b9a\u3057\u305f\u30d1\u30b9\u306b1\u30d5\u30a1\u30a4\u30eb\u3092\u305d\u306e\u307e\u307e\u51fa\u529b\u3057\u307e\u3059\uff08\u62e1\u5f35\u5b50\u306e\u81ea\u52d5\u4ed8\u4e0e\u306f\u884c\u3044\u307e\u305b\u3093\uff09\u3002\r\n\r\n### 2. \u7279\u5b9a\u30b7\u30fc\u30c8\u3092Python\u30ea\u30b9\u30c8\u3068\u3057\u3066\u8aad\u307f\u8fbc\u307f\r\n\r\n```python\r\nfrom xlsx2csv_mergefill import read_sheet\r\n\r\nrows = read_sheet(\"input.xlsx\")\r\n```\r\n\r\n### 3. \u5168\u30b7\u30fc\u30c8\u3092\u8f9e\u66f8\u5f62\u5f0f\u3067\u8aad\u307f\u8fbc\u307f\r\n\r\n```python\r\nfrom xlsx2csv_mergefill import read_workbook\r\n\r\ndata = read_workbook(\"input.xlsx\")\r\n```\r\n\r\n**\u5f15\u6570**\r\n\r\n* `input_path`: \u5165\u529bExcel\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30b9\r\n* `output_path`: \u51fa\u529b\u5148\u306e\u30d1\u30b9\u3002\u8907\u6570\u30b7\u30fc\u30c8\u306e\u5834\u5408\u306f\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u3057\u3066\u6271\u308f\u308c\u3001`<\u6307\u5b9a\u30d1\u30b9\u306e\u62e1\u5f35\u5b50\u306a\u3057>_\u30b7\u30fc\u30c8\u540d.csv` \u3092\u540c\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u51fa\u529b\u3057\u307e\u3059\u3002\u5358\u4e00\u30b7\u30fc\u30c8\u306e\u5834\u5408\u306f\u3053\u306e\u30d1\u30b9\u306b\u305d\u306e\u307e\u307e\u51fa\u529b\u3057\u307e\u3059\uff08\u4f8b\uff1a`out.csv` \u3092\u6307\u5b9a\u3059\u308b\u3068 `out.csv` \u3092\u51fa\u529b\uff09\u3002\r\n\r\n**\u623b\u308a\u5024**\r\n\r\n* \u6210\u529f\u6642\u306b `0` \u3092\u8fd4\u3057\u307e\u3059\u3002\r\n\r\n**\u4f8b\u5916**\r\n\r\n* `FileNotFoundError` \u306a\u3069\u306e\u4f8b\u5916\u3092\u9001\u51fa\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\r\n\r\n## \u5236\u9650\u4e8b\u9805\r\n\r\n* \u5165\u529b\u5f62\u5f0f\u306f `.xlsx` \u306e\u307f\u5bfe\u5fdc\uff08`.xls` \u975e\u5bfe\u5fdc\uff09\r\n* \u51fa\u529b\u5f62\u5f0f\u306f `cp932` / \u30ab\u30f3\u30de\u533a\u5207\u308a\u56fa\u5b9a\r\n* \u6570\u5f0f\u30bb\u30eb\u306f\u8a08\u7b97\u6e08\u307f\u306e\u5024\u3068\u3057\u3066\u53d6\u5f97\u3055\u308c\u307e\u3059\r\n\r\n## \u30e9\u30a4\u30bb\u30f3\u30b9\r\n\r\n\u672c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306fMIT\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u4e0b\u3067\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306f[LICENSE](LICENSE)\u30d5\u30a1\u30a4\u30eb\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Simple Excel to CSV converter with merged-cell propagation and cp932 encoding",
"version": "1.0.1",
"project_urls": {
"Homepage": "https://github.com/your-username/xlsx2csv-mergefill",
"Issues": "https://github.com/your-username/xlsx2csv-mergefill/issues",
"Repository": "https://github.com/your-username/xlsx2csv-mergefill.git"
},
"split_keywords": [
"excel",
" csv",
" converter",
" merged-cells",
" cp932",
" shift-jis",
" japanese"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "dde712ab3da9a0b5ef388fa186a11a687303bf607abdbcdcdbef3353ec771684",
"md5": "e0b2bf166ac73dcddad07d99c2385a8a",
"sha256": "5d79a3b6ad715123e2ffeac09c6a642459678cdc61a6015b8394168bb8baa691"
},
"downloads": -1,
"filename": "xlsx2csv_mergefill-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e0b2bf166ac73dcddad07d99c2385a8a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 6134,
"upload_time": "2025-10-07T01:26:37",
"upload_time_iso_8601": "2025-10-07T01:26:37.877088Z",
"url": "https://files.pythonhosted.org/packages/dd/e7/12ab3da9a0b5ef388fa186a11a687303bf607abdbcdcdbef3353ec771684/xlsx2csv_mergefill-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ebb56c3302d3b92c2dd93b3694558fd3ad62cb927844fccc3664dabd2512261c",
"md5": "153bf0843ee93fa5ccca2bfbd1579bb3",
"sha256": "f04ceb86a63d314057a278b9fa7418525add1149e4f8df042bab1526c17e4836"
},
"downloads": -1,
"filename": "xlsx2csv-mergefill-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "153bf0843ee93fa5ccca2bfbd1579bb3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 6381,
"upload_time": "2025-10-07T01:26:39",
"upload_time_iso_8601": "2025-10-07T01:26:39.502064Z",
"url": "https://files.pythonhosted.org/packages/eb/b5/6c3302d3b92c2dd93b3694558fd3ad62cb927844fccc3664dabd2512261c/xlsx2csv-mergefill-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-07 01:26:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "your-username",
"github_project": "xlsx2csv-mergefill",
"github_not_found": true,
"lcname": "xlsx2csv-mergefill"
}