{"id":1830,"date":"2026-07-30T14:19:37","date_gmt":"2026-07-30T05:19:37","guid":{"rendered":"https:\/\/blog.nexive.tech\/?p=1830"},"modified":"2026-07-30T18:52:49","modified_gmt":"2026-07-30T09:52:49","slug":"python-openpyxl-excel-report-check","status":"publish","type":"post","link":"https:\/\/blog.nexive.tech\/?p=1830","title":{"rendered":"Python\u306eopenpyxl\u3067Excel\u5e33\u7968\u306e\u7a7a\u6b04\u3068\u91d1\u984d\u30ba\u30ec\u3092\u4e00\u62ec\u30c1\u30a7\u30c3\u30af\u3059\u308b"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u3092\u6539\u4fee\u3057\u305f\u3042\u3068\u3001\u8acb\u6c42\u66f8\u3084\u7d0d\u54c1\u66f8\u306eExcel\u5e33\u7968\u3092\u307e\u3068\u3081\u3066\u51fa\u529b\u3057\u3001\u5185\u5bb9\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u679a\u306a\u3089\u307e\u3060\u76ee\u3067\u8ffd\u3048\u307e\u3059\u3002\u3068\u3053\u308d\u304c\u3001\u8acb\u6c42\u66f8\u309230\u4ef6\u51fa\u3057\u3066\u3001\u8acb\u6c42\u5148\u540d\u3001\u660e\u7d30\u91d1\u984d\u3001\u5c0f\u8a08\u3001\u6d88\u8cbb\u7a0e\u3001\u5408\u8a08\u91d1\u984d\u3092\u9806\u756a\u306b\u898b\u308b\u3068\u306a\u308b\u3068\u8a71\u304c\u5909\u308f\u308a\u307e\u3059\u3002Excel\u3092\u958b\u3044\u3066\u3001\u540c\u3058\u30bb\u30eb\u3092\u898b\u3066\u3001\u9589\u3058\u3066\u3001\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3002\u9014\u4e2d\u304b\u3089\u300c\u78ba\u8a8d\u3057\u305f\u300d\u306e\u304b\u300c\u773a\u3081\u305f\u300d\u306e\u304b\u5206\u304b\u3089\u306a\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Excel\u5e33\u7968\u306e\u78ba\u8a8d\u3092\u5168\u90e8\u81ea\u52d5\u5316\u3059\u308b\u8a71\u306f\u3057\u307e\u305b\u3093\u3002\u76ee\u8996\u78ba\u8a8d\u306b\u5165\u308b\u524d\u306b\u3001\u6a5f\u68b0\u3067\u62fe\u3048\u308b\u7a7a\u6b04\u3068\u91d1\u984d\u30ba\u30ec\u3092\u5148\u306b\u51fa\u3059\u65b9\u6cd5\u3092\u6574\u7406\u3057\u307e\u3059\u3002\u984c\u6750\u306f\u3001\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u304c\u51fa\u529b\u3057\u305f\u8acb\u6c42\u66f8Excel\u3067\u3059\u3002Python\u3068openpyxl\u3067\u8907\u6570\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u3001\u554f\u984c\u304c\u3042\u308b\u30d5\u30a1\u30a4\u30eb\u540d\u3001\u30bb\u30eb\u4f4d\u7f6e\u3001\u5185\u5bb9\u3092CSV\u306b\u6b8b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div style=\"border-color:#caecec;border-width:1px;border-style:solid;border-radius:8px;background-color:#f2fbfb;margin-top:1.8em;margin-bottom:2em;padding:16px 18px\"><p style=\"line-height:2;margin:0\">\u3053\u306e\u8a18\u4e8b\u3067\u4f5c\u308b\u306e\u306f\u3001\u5e33\u7968\u3092\u6b63\u3057\u304f\u898b\u305f\u76ee\u307e\u3067\u5224\u5b9a\u3059\u308b\u4ed5\u7d44\u307f\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u76ee\u8996\u78ba\u8a8d\u306e\u524d\u306b\u3001\u7a7a\u6b04\u3068\u91d1\u984d\u30ba\u30ec\u3092\u5148\u306b\u62fe\u3046\u305f\u3081\u306e\u78ba\u8a8d\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3059\u3002<\/p><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306f\u3001\u8a18\u4e8b\u3068\u3042\u308f\u305b\u3066\u516c\u958b\u3057\u3066\u3044\u308b\u30b3\u30fc\u30c9\u7f6e\u304d\u5834\u306b\u3042\u308a\u307e\u3059\u3002\u4eca\u56de\u4f7f\u3046\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306e <a href=\"https:\/\/github.com\/nexive-tech\/nexive-lab\/tree\/main\/python\/excel-report-batch-check\"><code>python\/excel-report-batch-check\/<\/code><\/a> \u3067\u3059\u3002<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Excel\u5e33\u7968\u306e\u78ba\u8a8d\u3067\u76ee\u8996\u3060\u3051\u306b\u983c\u308b\u3068\u4f55\u304c\u8d77\u304d\u308b\u304b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">30\u4ef6\u300150\u4ef6\u306b\u306a\u308b\u3068\u540c\u3058\u30bb\u30eb\u306e\u78ba\u8a8d\u304c\u629c\u3051\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e33\u7968\u78ba\u8a8d\u3067\u3064\u3089\u3044\u306e\u306f\u3001\u96e3\u3057\u3044\u5224\u65ad\u3060\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u540c\u3058\u78ba\u8a8d\u3092\u4f55\u5ea6\u3082\u7e70\u308a\u8fd4\u3059\u3053\u3068\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8acb\u6c42\u66f8\u306a\u3089\u3001\u8acb\u6c42\u66f8\u756a\u53f7\u3001\u8acb\u6c42\u65e5\u3001\u8acb\u6c42\u5148\u540d\u3001\u5c0f\u8a08\u3001\u6d88\u8cbb\u7a0e\u3001\u5408\u8a08\u91d1\u984d\u3092\u898b\u308b\u3002\u660e\u7d30\u304c\u3042\u308c\u3070\u3001\u54c1\u540d\u3001\u6570\u91cf\u3001\u5358\u4fa1\u3001\u91d1\u984d\u3082\u898b\u308b\u3002\u3053\u308c\u3092\u4f55\u5341\u4ef6\u3082\u7d9a\u3051\u308b\u3068\u3001\u76ee\u306f\u540c\u3058\u5834\u6240\u3092\u898b\u3066\u3044\u308b\u3064\u3082\u308a\u3067\u3082\u3001\u7a7a\u6b04\u3084\u91d1\u984d\u30ba\u30ec\u3092\u898b\u843d\u3068\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7279\u306b\u3001\u30b7\u30b9\u30c6\u30e0\u6539\u4fee\u5f8c\u306e\u78ba\u8a8d\u3067\u306f\u300c\u5168\u90e8\u306e\u5e33\u7968\u3092\u3056\u3063\u3068\u898b\u308b\u300d\u306b\u306a\u308a\u304c\u3061\u3067\u3059\u3002\u3056\u3063\u3068\u898b\u308b\u78ba\u8a8d\u306f\u3001\u30ec\u30a4\u30a2\u30a6\u30c8\u5d29\u308c\u306b\u306f\u6c17\u3065\u304d\u3084\u3059\u3044\u4e00\u65b9\u3067\u3001\u30bb\u30eb\u5358\u4f4d\u306e\u5024\u306e\u30ba\u30ec\u306b\u306f\u5f31\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u91d1\u984d\u30ba\u30ec\u306f\u898b\u305f\u76ee\u3060\u3051\u3067\u306f\u6c17\u3065\u304d\u306b\u304f\u3044<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u91d1\u984d\u306e\u30ba\u30ec\u306f\u3001\u5e33\u7968\u306e\u898b\u305f\u76ee\u304c\u6574\u3063\u3066\u3044\u3066\u3082\u8d77\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305f\u3068\u3048\u3070\u3001\u660e\u7d30\u884c\u306e\u91d1\u984d\u304c <code>\u6570\u91cf * \u5358\u4fa1<\/code> \u3068\u4e00\u81f4\u3057\u3066\u3044\u306a\u3044\u3002\u5c0f\u8a08\u304c\u660e\u7d30\u91d1\u984d\u306e\u5408\u8a08\u3068\u9055\u3046\u3002\u6d88\u8cbb\u7a0e\u306e\u4e38\u3081\u304c\u30b7\u30b9\u30c6\u30e0\u306e\u4ed5\u69d8\u3068\u9055\u3046\u3002\u5408\u8a08\u91d1\u984d\u304c\u5c0f\u8a08\u3068\u6d88\u8cbb\u7a0e\u306b\u5408\u3063\u3066\u3044\u306a\u3044\u3002\u3053\u3046\u3044\u3046\u554f\u984c\u306f\u3001\u5e33\u7968\u5168\u4f53\u306e\u898b\u305f\u76ee\u3060\u3051\u3067\u306f\u5206\u304b\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76ee\u8996\u3067\u78ba\u8a8d\u3059\u308b\u306a\u3089\u3001\u660e\u7d30\u91d1\u984d\u3092\u8db3\u3057\u3001\u5c0f\u8a08\u3068\u6bd4\u3079\u3001\u6d88\u8cbb\u7a0e\u3092\u8a08\u7b97\u3057\u3001\u5408\u8a08\u91d1\u984d\u3092\u898b\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u4eba\u304c\u7e70\u308a\u8fd4\u3059\u306b\u306f\u91cd\u3044\u78ba\u8a8d\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30ec\u30a4\u30a2\u30a6\u30c8\u78ba\u8a8d\u3068\u5024\u306e\u78ba\u8a8d\u3092\u4e00\u7dd2\u306b\u3059\u308b\u3068\u75b2\u308c\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e33\u7968\u78ba\u8a8d\u306b\u306f\u3001\u4eba\u304c\u898b\u305f\u65b9\u304c\u3088\u3044\u3082\u306e\u3068\u3001\u6a5f\u68b0\u3067\u62fe\u3044\u3084\u3059\u3044\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-table\" style=\"margin-bottom:2em\"><table><thead><tr><th>\u78ba\u8a8d\u3059\u308b\u3082\u306e<\/th><th>\u5411\u3044\u3066\u3044\u308b\u78ba\u8a8d\u65b9\u6cd5<\/th><th>\u7406\u7531<\/th><\/tr><\/thead><tbody><tr><td>\u5370\u5b57\u4f4d\u7f6e\u3001\u6587\u5b57\u5207\u308c\u3001\u898b\u305f\u76ee\u306e\u9055\u548c\u611f<\/td><td>\u4eba\u304c\u898b\u308b<\/td><td>\u5e33\u7968\u3054\u3068\u306e\u4f8b\u5916\u3084\u898b\u305f\u76ee\u306e\u5224\u65ad\u304c\u6df7\u3056\u308b\u305f\u3081<\/td><\/tr><tr><td>\u8acb\u6c42\u5148\u540d\u3084\u8acb\u6c42\u65e5\u306e\u7a7a\u6b04<\/td><td>\u6a5f\u68b0\u3067\u5148\u306b\u62fe\u3046<\/td><td>\u30bb\u30eb\u4f4d\u7f6e\u304c\u6c7a\u307e\u3063\u3066\u3044\u308c\u3070\u540c\u3058\u6761\u4ef6\u3067\u78ba\u8a8d\u3067\u304d\u308b\u305f\u3081<\/td><\/tr><tr><td>\u660e\u7d30\u91d1\u984d\u3084\u5408\u8a08\u91d1\u984d\u306e\u30ba\u30ec<\/td><td>\u6a5f\u68b0\u3067\u5148\u306b\u62fe\u3046<\/td><td>\u8a08\u7b97\u5f0f\u3068\u3057\u3066\u78ba\u8a8d\u3067\u304d\u3001\u4ef6\u6570\u304c\u5897\u3048\u3066\u3082\u7e70\u308a\u8fd4\u305b\u308b\u305f\u3081<\/td><\/tr><\/tbody><\/table><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u5168\u90e8\u3092\u4eba\u304c\u898b\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u6a5f\u68b0\u3067\u62fe\u3048\u308b\u3082\u306e\u3092\u5148\u306b\u51fa\u3057\u307e\u3059\u3002\u305d\u306e\u3042\u3068\u3067\u3001\u4eba\u304c\u30ec\u30a4\u30a2\u30a6\u30c8\u3084\u4f8b\u5916\u8868\u793a\u3092\u898b\u308b\u3002\u3053\u306e\u9806\u756a\u306b\u3059\u308b\u3060\u3051\u3067\u3082\u3001\u78ba\u8a8d\u306e\u8ca0\u62c5\u306f\u304b\u306a\u308a\u5909\u308f\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<div style=\"border-color:#f1d48b;border-width:1px;border-style:solid;border-radius:8px;background-color:#fff8e6;margin-top:1.8em;margin-bottom:2em;padding:16px 18px\"><p style=\"line-height:2;margin:0\">\u5e33\u7968\u78ba\u8a8d\u3092\u6700\u521d\u304b\u3089\u5168\u90e8\u81ea\u52d5\u5316\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001\u4f8b\u5916\u5bfe\u5fdc\u304c\u5897\u3048\u3066\u30b9\u30af\u30ea\u30d7\u30c8\u5074\u306e\u78ba\u8a8d\u304c\u91cd\u304f\u306a\u308a\u307e\u3059\u3002\u307e\u305a\u306f\u30bb\u30eb\u4f4d\u7f6e\u3068\u91d1\u984d\u8a08\u7b97\u3067\u5224\u5b9a\u3067\u304d\u308b\u7bc4\u56f2\u306b\u7d5e\u308a\u307e\u3059\u3002<\/p><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u5148\u306b\u6a5f\u68b0\u3067\u62fe\u3046\u78ba\u8a8d\u9805\u76ee\u3092\u6c7a\u3081\u308b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u7a7a\u6b04\u306f\u30bb\u30eb\u4f4d\u7f6e\u304c\u6c7a\u307e\u3063\u3066\u3044\u308c\u3070\u62fe\u3048\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8acb\u6c42\u66f8\u756a\u53f7\u3001\u8acb\u6c42\u65e5\u3001\u8acb\u6c42\u5148\u540d\u306e\u3088\u3046\u306a\u9805\u76ee\u306f\u3001\u5e33\u7968\u4e0a\u306e\u30bb\u30eb\u4f4d\u7f6e\u304c\u6c7a\u307e\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306e\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001\u6b21\u306e\u30bb\u30eb\u3092\u5fc5\u9808\u30bb\u30eb\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-table\" style=\"margin-bottom:2em\"><table><thead><tr><th>\u30bb\u30eb<\/th><th>\u9805\u76ee<\/th><th>\u30c1\u30a7\u30c3\u30af\u5185\u5bb9<\/th><\/tr><\/thead><tbody><tr><td>B2<\/td><td>\u8acb\u6c42\u66f8\u756a\u53f7<\/td><td>\u7a7a\u3067\u306a\u3044\u3053\u3068<\/td><\/tr><tr><td>B3<\/td><td>\u8acb\u6c42\u65e5<\/td><td>\u7a7a\u3067\u306a\u3044\u3053\u3068<\/td><\/tr><tr><td>B5<\/td><td>\u8acb\u6c42\u5148\u540d<\/td><td>\u7a7a\u3067\u306a\u3044\u3053\u3068<\/td><\/tr><\/tbody><\/table><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u306fPython\u3067\u96e3\u3057\u3044\u3053\u3068\u3092\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u6307\u5b9a\u3057\u305f\u30bb\u30eb\u3092\u8aad\u307f\u3001\u7a7a\u306a\u3089\u30a8\u30e9\u30fc\u306b\u3059\u308b\u3060\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u660e\u7d30\u91d1\u984d\u306f\u6570\u91cf\u3068\u5358\u4fa1\u304b\u3089\u8a08\u7b97\u3067\u304d\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u660e\u7d30\u884c\u306e\u91d1\u984d\u306f\u3001\u6570\u91cf\u3068\u5358\u4fa1\u304b\u3089\u671f\u5f85\u5024\u3092\u4f5c\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305f\u3068\u3048\u3070\u3001\u6570\u91cf\u304c <code>2<\/code>\u3001\u5358\u4fa1\u304c <code>12000<\/code> \u306a\u3089\u3001\u660e\u7d30\u91d1\u984d\u306e\u671f\u5f85\u5024\u306f <code>24000<\/code> \u3067\u3059\u3002\u5e33\u7968\u4e0a\u306e\u91d1\u984d\u30bb\u30eb\u304c <code>23000<\/code> \u306a\u3089\u30ba\u30ec\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u660e\u7d30\u884c\u306f\u56fa\u5b9a\u30bb\u30eb\u3088\u308a\u5c11\u3057\u3060\u3051\u9762\u5012\u3067\u3059\u30021\u884c\u3060\u3051\u3067\u306f\u306a\u304f\u30018\u884c\u76ee\u304b\u308917\u884c\u76ee\u307e\u3067\u306e\u3088\u3046\u306b\u7bc4\u56f2\u3067\u898b\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3089\u3067\u3059\u3002\u305d\u308c\u3067\u3082\u3001\u958b\u59cb\u884c\u3001\u7d42\u4e86\u884c\u3001\u6570\u91cf\u5217\u3001\u5358\u4fa1\u5217\u3001\u91d1\u984d\u5217\u304c\u6c7a\u307e\u3063\u3066\u3044\u308c\u3070\u3001\u6a5f\u68b0\u3067\u7e70\u308a\u8fd4\u3057\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5408\u8a08\u91d1\u984d\u306f\u5c0f\u8a08\u3068\u6d88\u8cbb\u7a0e\u304b\u3089\u671f\u5f85\u5024\u3092\u4f5c\u308c\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5408\u8a08\u6b04\u3082\u540c\u3058\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u660e\u7d30\u91d1\u984d\u3092\u8db3\u3057\u3066\u5c0f\u8a08\u3092\u4f5c\u308b\u3002\u5c0f\u8a08\u306b\u7a0e\u7387\u3092\u639b\u3051\u3066\u6d88\u8cbb\u7a0e\u3092\u4f5c\u308b\u3002\u5c0f\u8a08\u3068\u6d88\u8cbb\u7a0e\u3092\u8db3\u3057\u3066\u5408\u8a08\u91d1\u984d\u3092\u4f5c\u308b\u3002\u5e33\u7968\u4e0a\u306e\u5024\u3068\u671f\u5f85\u5024\u3092\u6bd4\u3079\u308c\u3070\u3001\u30ba\u30ec\u3092\u691c\u51fa\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305f\u3060\u3057\u3001\u7a0e\u8a08\u7b97\u306b\u306f\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002\u5207\u308a\u6368\u3066\u3001\u5207\u308a\u4e0a\u3052\u3001\u56db\u6368\u4e94\u5165\u3001\u660e\u7d30\u5358\u4f4d\u306e\u7a0e\u8a08\u7b97\u3001\u8acb\u6c42\u66f8\u5358\u4f4d\u306e\u7a0e\u8a08\u7b97\u306a\u3069\u3001\u30b7\u30b9\u30c6\u30e0\u3054\u3068\u306b\u30eb\u30fc\u30eb\u304c\u9055\u3044\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u5186\u5358\u4f4d\u306e\u56db\u6368\u4e94\u5165\u306b\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u5b9f\u52d9\u3067\u306f\u81ea\u5206\u306e\u30b7\u30b9\u30c6\u30e0\u306e\u8a08\u7b97\u30eb\u30fc\u30eb\u306b\u5408\u308f\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"swl-marker mark_orange\"><strong>\u4e38\u3081\u65b9\u304c\u9055\u3046\u3068\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u65b9\u304c\u9593\u9055\u3063\u305f\u30a8\u30e9\u30fc\u3092\u51fa\u3057\u307e\u3059\u3002<\/strong><\/span> \u5408\u8a08\u91d1\u984d\u3092\u898b\u308b\u524d\u306b\u3001\u30b7\u30b9\u30c6\u30e0\u5074\u306e\u7aef\u6570\u51e6\u7406\u3092\u78ba\u8a8d\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u898b\u305f\u76ee\u3084\u4f8b\u5916\u8868\u793a\u306f\u6700\u5f8c\u306b\u4eba\u304c\u898b\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Python\u3067\u898b\u308b\u5bfe\u8c61\u3092\u5897\u3084\u3057\u3059\u304e\u308b\u3068\u3001\u78ba\u8a8d\u30b9\u30af\u30ea\u30d7\u30c8\u81ea\u4f53\u304c\u91cd\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ec\u30a4\u30a2\u30a6\u30c8\u5d29\u308c\u3001\u5370\u5b57\u4f4d\u7f6e\u3001\u6587\u5b57\u5207\u308c\u3001\u5f97\u610f\u5148\u3054\u3068\u306e\u4f8b\u5916\u6587\u8a00\u306f\u3001\u4eba\u304c\u898b\u305f\u65b9\u304c\u65e9\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u307e\u3067\u6700\u521d\u304b\u3089\u81ea\u52d5\u5316\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001\u5e33\u7968\u3054\u3068\u306e\u4f8b\u5916\u3092\u30b9\u30af\u30ea\u30d7\u30c8\u306b\u8a70\u3081\u8fbc\u307f\u59cb\u3081\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"swl-marker mark_yellow\">\u6700\u521d\u306f\u3001\u7a7a\u6b04\u3068\u91d1\u984d\u30ba\u30ec\u3060\u3051\u3092\u6a5f\u68b0\u3067\u62fe\u3046\u3002\u898b\u305f\u76ee\u306f\u6700\u5f8c\u306b\u4eba\u304c\u898b\u308b\u3002<\/span> \u3053\u306e\u5206\u62c5\u306b\u3057\u3066\u304a\u304f\u3068\u3001\u78ba\u8a8d\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f7f\u3044\u7d9a\u3051\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8acb\u6c42\u66f8Excel\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3084\u3059\u3044\u5f62\u306b\u5206\u89e3\u3059\u308b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u56fa\u5b9a\u30bb\u30eb\u306f\u8acb\u6c42\u66f8\u756a\u53f7\u3001\u8acb\u6c42\u65e5\u3001\u8acb\u6c42\u5148\u540d\u3092\u898b\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e33\u7968\u306f\u4e00\u89a7\u30c7\u30fc\u30bf\u3068\u9055\u3044\u3001\u3059\u3079\u3066\u306e\u5024\u304c\u884c\u3068\u5217\u306b\u304d\u308c\u3044\u306b\u4e26\u3076\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8acb\u6c42\u66f8\u756a\u53f7\u306fB2\u3001\u8acb\u6c42\u65e5\u306fB3\u3001\u8acb\u6c42\u5148\u540d\u306fB5\u306e\u3088\u3046\u306b\u3001\u7279\u5b9a\u306e\u30bb\u30eb\u306b\u7f6e\u304b\u308c\u3066\u3044\u308b\u9805\u76ee\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3046\u3057\u305f\u9805\u76ee\u306f\u3001\u56fa\u5b9a\u30bb\u30eb\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56fa\u5b9a\u30bb\u30eb\u306e\u30c1\u30a7\u30c3\u30af\u3067\u306f\u3001\u307e\u305a\u300c\u7a7a\u3060\u3068\u56f0\u308b\u9805\u76ee\u300d\u3092\u9078\u3073\u307e\u3059\u3002\u3044\u304d\u306a\u308a\u5168\u9805\u76ee\u3092\u5bfe\u8c61\u306b\u3059\u308b\u3068\u3001\u5e33\u7968\u306e\u5c11\u3057\u306e\u5909\u66f4\u3067\u30a8\u30e9\u30fc\u304c\u5897\u3048\u307e\u3059\u3002\u6700\u521d\u306f\u3001\u8acb\u6c42\u66f8\u3068\u3057\u3066\u6700\u4f4e\u9650\u5fc5\u8981\u306a\u9805\u76ee\u3060\u3051\u3067\u5341\u5206\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u660e\u7d30\u884c\u306f\u54c1\u540d\u3001\u6570\u91cf\u3001\u5358\u4fa1\u3001\u91d1\u984d\u3092\u898b\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u660e\u7d30\u884c\u306f\u3001\u56fa\u5b9a\u30bb\u30eb\u3068\u306f\u5225\u306b\u8003\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306e\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u30018\u884c\u76ee\u304b\u308917\u884c\u76ee\u307e\u3067\u3092\u660e\u7d30\u7bc4\u56f2\u306b\u3057\u3066\u3044\u307e\u3059\u3002B\u5217\u304c\u54c1\u540d\u3001D\u5217\u304c\u6570\u91cf\u3001E\u5217\u304c\u5358\u4fa1\u3001F\u5217\u304c\u91d1\u984d\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-table\" style=\"margin-bottom:2em\"><table><thead><tr><th>\u7bc4\u56f2<\/th><th>\u9805\u76ee<\/th><th>\u898b\u65b9<\/th><\/tr><\/thead><tbody><tr><td>B8:B17<\/td><td>\u54c1\u540d<\/td><td>\u660e\u7d30\u304c\u3042\u308b\u884c\u3067\u306f\u7a7a\u3067\u306a\u3044\u3053\u3068<\/td><\/tr><tr><td>D8:D17<\/td><td>\u6570\u91cf<\/td><td>\u6570\u5024\u3068\u3057\u3066\u8aad\u3081\u308b\u3053\u3068<\/td><\/tr><tr><td>E8:E17<\/td><td>\u5358\u4fa1<\/td><td>\u6570\u5024\u3068\u3057\u3066\u8aad\u3081\u308b\u3053\u3068<\/td><\/tr><tr><td>F8:F17<\/td><td>\u91d1\u984d<\/td><td>\u6570\u91cf\u00d7\u5358\u4fa1\u3068\u4e00\u81f4\u3059\u308b\u3053\u3068<\/td><\/tr><\/tbody><\/table><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u7a7a\u884c\u306f\u672a\u4f7f\u7528\u884c\u3068\u3057\u3066\u98db\u3070\u3057\u307e\u3059\u3002\u54c1\u540d\u3060\u3051\u5165\u3063\u3066\u3044\u308b\u3001\u6570\u91cf\u3060\u3051\u7a7a\u306b\u306a\u3063\u3066\u3044\u308b\u3001\u3068\u3044\u3063\u305f\u884c\u306f\u30a8\u30e9\u30fc\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5408\u8a08\u6b04\u306f\u5c0f\u8a08\u3001\u6d88\u8cbb\u7a0e\u3001\u5408\u8a08\u91d1\u984d\u3092\u898b\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5408\u8a08\u6b04\u306f\u3001\u660e\u7d30\u884c\u304b\u3089\u4f5c\u3063\u305f\u671f\u5f85\u5024\u3068\u6bd4\u3079\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001F18\u3092\u5c0f\u8a08\u3001F19\u3092\u6d88\u8cbb\u7a0e\u3001F20\u3092\u5408\u8a08\u91d1\u984d\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002\u660e\u7d30\u91d1\u984d\u306e\u5408\u8a08\u3068F18\u3092\u6bd4\u3079\u3001\u5c0f\u8a08\u304b\u3089\u6d88\u8cbb\u7a0e\u3092\u8a08\u7b97\u3057\u3066F19\u3068\u6bd4\u3079\u3001\u5c0f\u8a08\u3068\u6d88\u8cbb\u7a0e\u3092\u8db3\u3057\u305f\u5024\u3092F20\u3068\u6bd4\u3079\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u307e\u3067\u898b\u308b\u3068\u3001\u8acb\u6c42\u66f8\u306e\u5024\u306e\u6574\u5408\u6027\u306f\u304b\u306a\u308a\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u30ec\u30a4\u30a2\u30a6\u30c8\u307e\u3067\u306f\u5206\u304b\u308a\u307e\u305b\u3093\u304c\u3001\u5c11\u306a\u304f\u3068\u3082\u300c\u91d1\u984d\u304c\u5408\u3063\u3066\u3044\u308b\u304b\u300d\u3092\u6bce\u56de\u624b\u3067\u8db3\u3057\u76f4\u3059\u5fc5\u8981\u306f\u6e1b\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5e33\u7968\u3054\u3068\u306b\u5909\u308f\u308b\u3082\u306e\u306f\u8a2d\u5b9a\u306b\u9003\u304c\u3059<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30bb\u30eb\u4f4d\u7f6e\u3084\u7a0e\u7387\u306f\u3001\u5e33\u7968\u3054\u3068\u306b\u5909\u308f\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8acb\u6c42\u66f8\u3067\u306fB5\u304c\u8acb\u6c42\u5148\u540d\u3067\u3082\u3001\u5225\u306e\u5e33\u7968\u3067\u306fC6\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u660e\u7d30\u884c\u308210\u884c\u76ee\u304b\u3089\u59cb\u307e\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u7a0e\u7387\u3084\u4e38\u3081\u65b9\u3082\u3001\u6848\u4ef6\u306b\u3088\u3063\u3066\u5909\u308f\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u306e\u305f\u3081\u3001\u5e33\u7968\u306e\u5f62\u306b\u95a2\u3059\u308b\u60c5\u5831\u306fPython\u30b3\u30fc\u30c9\u306b\u57cb\u3081\u8fbc\u307f\u3059\u304e\u305a\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u5206\u3051\u307e\u3059\u3002\u4eca\u56de\u306e\u30b5\u30f3\u30d7\u30eb\u3067\u306f <code>rules.json<\/code> \u306b\u5206\u3051\u3066\u3044\u307e\u3059\u3002<span class=\"swl-marker mark_yellow\">\u5e33\u7968\u306e\u9055\u3044\u306f\u3001\u307e\u305a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u5438\u53ce\u3059\u308b<\/span> \u3068\u6c7a\u3081\u3066\u304a\u304f\u3068\u3001\u30b3\u30fc\u30c9\u3092\u76f4\u3059\u56de\u6570\u3092\u6e1b\u3089\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><code>rules.json<\/code> \u306b\u5e33\u7968\u306e\u898b\u65b9\u3092\u66f8\u304f<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u5fc5\u9808\u30bb\u30eb\u3092 <code>required_cells<\/code> \u306b\u66f8\u304f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>rules.json<\/code> \u306e <code>required_cells<\/code> \u306b\u306f\u3001\u7a7a\u3060\u3068\u56f0\u308b\u30bb\u30eb\u3092\u66f8\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">JSON<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\"required_cells\": {\n  \"B2\": \"\u8acb\u6c42\u66f8\u756a\u53f7\",\n  \"B3\": \"\u8acb\u6c42\u65e5\",\n  \"B5\": \"\u8acb\u6c42\u5148\u540d\"\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">required_cells<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">B2<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">\u8acb\u6c42\u66f8\u756a\u53f7<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">B3<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">\u8acb\u6c42\u65e5<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">B5<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">\u8acb\u6c42\u5148\u540d<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ad\u30fc\u304c\u30bb\u30eb\u4f4d\u7f6e\u3001\u5024\u304c\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306b\u4f7f\u3046\u9805\u76ee\u540d\u3067\u3059\u3002\u305f\u3068\u3048\u3070B5\u304c\u7a7a\u306a\u3089\u3001<code>\u8acb\u6c42\u5148\u540d\u304c\u7a7a\u3067\u3059<\/code> \u3068\u3044\u3046\u30a8\u30e9\u30fc\u306b\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u81ea\u5206\u306e\u5e33\u7968\u306b\u5408\u308f\u305b\u308b\u5834\u5408\u306f\u3001\u3053\u3053\u3092\u6700\u521d\u306b\u76f4\u3057\u307e\u3059\u3002\u8acb\u6c42\u5148\u540d\u304cC7\u306b\u3042\u308b\u306a\u3089\u3001<code>\"B5\"<\/code> \u3092 <code>\"C7\"<\/code> \u306b\u5909\u3048\u307e\u3059\u3002\u652f\u6255\u671f\u9650\u3082\u5fc5\u9808\u306b\u3057\u305f\u3044\u306a\u3089\u3001\u30bb\u30eb\u4f4d\u7f6e\u3068\u9805\u76ee\u540d\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u660e\u7d30\u884c\u306e\u7bc4\u56f2\u3068\u5217\u3092 <code>detail<\/code> \u306b\u66f8\u304f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>detail<\/code> \u306b\u306f\u3001\u660e\u7d30\u884c\u306e\u958b\u59cb\u884c\u3001\u7d42\u4e86\u884c\u3001\u5404\u9805\u76ee\u306e\u5217\u3092\u66f8\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">JSON<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\"detail\": {\n  \"start_row\": 8,\n  \"end_row\": 17,\n  \"item_col\": \"B\",\n  \"quantity_col\": \"D\",\n  \"unit_price_col\": \"E\",\n  \"amount_col\": \"F\"\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">detail<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">start_row<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">8<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">end_row<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">17<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">item_col<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">B<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">quantity_col<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">D<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">unit_price_col<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">E<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">amount_col<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">F<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u8a2d\u5b9a\u304b\u3089\u3001B8\u3001D8\u3001E8\u3001F8\u3092\u898b\u3066\u3001\u6b21\u306bB9\u3001D9\u3001E9\u3001F9\u3092\u898b\u308b\u3001\u3068\u3044\u3046\u51e6\u7406\u3092\u4f5c\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u660e\u7d30\u304c30\u884c\u3042\u308b\u5e33\u7968\u306a\u3089 <code>end_row<\/code> \u3092\u5909\u3048\u307e\u3059\u3002\u91d1\u984d\u5217\u304cG\u5217\u306a\u3089 <code>amount_col<\/code> \u3092\u5909\u3048\u307e\u3059\u3002\u5e33\u7968\u3054\u3068\u306e\u9055\u3044\u3092\u3053\u3053\u3067\u5438\u53ce\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u304a\u304f\u3068\u3001Python\u30b3\u30fc\u30c9\u306e\u5909\u66f4\u3092\u6e1b\u3089\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5408\u8a08\u6b04\u3068\u7a0e\u7387\u3092 <code>totals<\/code> \u306b\u66f8\u304f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>totals<\/code> \u306b\u306f\u3001\u5c0f\u8a08\u3001\u6d88\u8cbb\u7a0e\u3001\u5408\u8a08\u91d1\u984d\u306e\u30bb\u30eb\u3068\u7a0e\u7387\u3092\u66f8\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">JSON<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\"totals\": {\n  \"subtotal_cell\": \"F18\",\n  \"tax_cell\": \"F19\",\n  \"total_cell\": \"F20\",\n  \"tax_rate\": 0.1\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">totals<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">subtotal_cell<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">F18<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">tax_cell<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">F19<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">total_cell<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">F20<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #8FBCBB\">tax_rate<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0.1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u3067\u5927\u4e8b\u306a\u306e\u306f\u3001\u5e33\u7968\u4e0a\u306e\u5024\u3068\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u8a08\u7b97\u3057\u305f\u671f\u5f85\u5024\u3092\u5206\u3051\u3066\u8003\u3048\u308b\u3053\u3068\u3067\u3059\u3002\u5e33\u7968\u4e0a\u306eF20\u3092\u305d\u306e\u307e\u307e\u4fe1\u7528\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u660e\u7d30\u5408\u8a08\u3068\u7a0e\u984d\u304b\u3089\u671f\u5f85\u5024\u3092\u4f5c\u308a\u3001F20\u3068\u6bd4\u3079\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u81ea\u5206\u306e\u5e33\u7968\u3067\u306f\u30bb\u30eb\u756a\u5730\u3068\u7a0e\u7387\u3092\u7f6e\u304d\u63db\u3048\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u305d\u306e\u307e\u307e\u5b9f\u52d9\u5e33\u7968\u306b\u5f53\u3066\u308b\u3053\u3068\u306f\u3001\u3042\u307e\u308a\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u3084\u308b\u3053\u3068\u306f\u3001Excel\u3092\u958b\u3044\u3066\u3001\u78ba\u8a8d\u3057\u305f\u3044\u9805\u76ee\u306e\u30bb\u30eb\u4f4d\u7f6e\u3092\u62fe\u3046\u3053\u3068\u3067\u3059\u3002\u8acb\u6c42\u66f8\u756a\u53f7\u306f\u3069\u3053\u304b\u3002\u8acb\u6c42\u5148\u540d\u306f\u3069\u3053\u304b\u3002\u660e\u7d30\u884c\u306f\u4f55\u884c\u76ee\u304b\u3089\u4f55\u884c\u76ee\u307e\u3067\u304b\u3002\u5c0f\u8a08\u3001\u6d88\u8cbb\u7a0e\u3001\u5408\u8a08\u91d1\u984d\u306f\u3069\u306e\u30bb\u30eb\u304b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u306e\u30bb\u30eb\u4f4d\u7f6e\u3092 <code>rules.json<\/code> \u306b\u5199\u3057\u307e\u3059\u3002Python\u30b3\u30fc\u30c9\u3092\u76f4\u3059\u306e\u306f\u3001\u305d\u306e\u3042\u3068\u3067\u8db3\u308a\u306a\u3044\u78ba\u8a8d\u304c\u51fa\u3066\u304d\u305f\u3068\u304d\u3067\u3059\u3002<\/p>\n\n\n<div class=\"swell-block-balloon\"><div class=\"c-balloon -bln-left\" data-col=\"gray\"><div class=\"c-balloon__icon -circle\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.nexive.tech\/wp-content\/uploads\/2026\/05\/small-smile-150x150.png\" alt=\"\" class=\"c-balloon__iconImg\" width=\"80px\" height=\"80px\"><span class=\"c-balloon__iconName\">tomo<\/span><\/div><div class=\"c-balloon__body -speaking -border-on\"><div class=\"c-balloon__text\">\n<p>\u6700\u521d\u306b\u4f5c\u308b\u3079\u304d\u306a\u306e\u306f\u3001\u4e07\u80fd\u306a\u30c1\u30a7\u30c3\u30af\u51e6\u7406\u3067\u306f\u306a\u304f\u3001\u81ea\u5206\u306e\u5e33\u7968\u3092\u3069\u3046\u898b\u308b\u304b\u3092\u66f8\u3044\u305f <code>rules.json<\/code> \u3067\u3059\u3002<\/p>\n<span class=\"c-balloon__shapes\"><span class=\"c-balloon__before\"><\/span><span class=\"c-balloon__after\"><\/span><\/span><\/div><\/div><\/div><\/div>\n\n\n<div style=\"border-color:#caecec;border-width:1px;border-style:solid;border-radius:8px;background-color:#f2fbfb;margin-top:1.8em;margin-bottom:2em;padding:16px 18px\"><p style=\"line-height:2;margin:0\">\u81ea\u5206\u306e\u5e33\u7968\u306b\u7f6e\u304d\u63db\u3048\u308b\u3068\u304d\u306f\u3001\u307e\u305a <code>required_cells<\/code>\u3001<code>detail<\/code>\u3001<code>totals<\/code> \u306e3\u304b\u6240\u3060\u3051\u3092\u898b\u307e\u3059\u3002Python\u30b3\u30fc\u30c9\u3092\u89e6\u308b\u524d\u306b\u3001Excel\u4e0a\u306e\u30bb\u30eb\u4f4d\u7f6e\u3068\u7a0e\u7387\u3092\u8a2d\u5b9a\u3078\u5199\u3059\u306e\u304c\u5148\u3067\u3059\u3002<\/p><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Python\u3067\u51fa\u529b\u6e08\u307fExcel\u3092\u307e\u3068\u3081\u3066\u8aad\u3080<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u5bfe\u8c61\u30d5\u30a9\u30eb\u30c0\u304b\u3089 <code>.xlsx<\/code> \u3092\u96c6\u3081\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u5165\u53e3\u3067\u306f\u3001\u5bfe\u8c61\u30d5\u30a9\u30eb\u30c0\u5185\u306e <code>.xlsx<\/code> \u3092\u96c6\u3081\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>rules = json.loads(Path(args.rules).read_text(encoding=\"utf-8\"))\nerrors = []\n\nfor workbook_path in sorted(Path(args.input_dir).glob(\"*.xlsx\")):\n    errors.extend(check_workbook(workbook_path, rules))<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">rules <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> json<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">loads<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">Path<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">args<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">rules<\/span><span style=\"color: #ECEFF4\">).<\/span><span style=\"color: #88C0D0\">read_text<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">encoding<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">utf-8<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">errors <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> workbook_path <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">sorted<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">Path<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">args<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">input_dir<\/span><span style=\"color: #ECEFF4\">).<\/span><span style=\"color: #88C0D0\">glob<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">*.xlsx<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    errors<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">extend<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">check_workbook<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">workbook_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> rules<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u306f\u3001\u624b\u4f5c\u696d\u3067\u3044\u3046\u300c\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u306b\u3042\u308bExcel\u3092\u9806\u756a\u306b\u958b\u304f\u300d\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u304b\u3089\u8acb\u6c42\u66f8\u309230\u4ef6\u51fa\u529b\u3057\u305f\u3089\u3001\u305d\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u6307\u5b9a\u3057\u3066\u540c\u3058\u30c1\u30a7\u30c3\u30af\u3092\u6d41\u3057\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u304c\u5897\u3048\u3066\u3082\u3001\u78ba\u8a8d\u6761\u4ef6\u306f\u540c\u3058\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1\u30d5\u30a1\u30a4\u30eb\u305a\u3064 <code>load_workbook()<\/code> \u3067\u958b\u304f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Excel\u30d5\u30a1\u30a4\u30eb\u306f\u3001openpyxl\u306e <code>load_workbook()<\/code> \u3067\u958b\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>workbook = load_workbook(workbook_path, data_only=True)\nsheet_name = rules&#91;\"sheet_name\"&#93;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">workbook <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">load_workbook<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">workbook_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">data_only<\/span><span style=\"color: #81A1C1\">=True<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">sheet_name <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> rules<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">sheet_name<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u3067\u306f <code>data_only=True<\/code> \u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u6570\u5f0f\u30bb\u30eb\u306b\u3064\u3044\u3066\u3001\u6570\u5f0f\u305d\u306e\u3082\u306e\u3067\u306f\u306a\u304f\u4fdd\u5b58\u6e08\u307f\u306e\u8a08\u7b97\u7d50\u679c\u3092\u8aad\u3080\u305f\u3081\u306e\u6307\u5b9a\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"swl-marker mark_orange\"><strong><code>data_only=True<\/code> \u306f\u3001Python\u304cExcel\u306e\u6570\u5f0f\u3092\u518d\u8a08\u7b97\u3059\u308b\u6307\u5b9a\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/strong><\/span> \u6570\u5f0f\u5165\u308a\u5e33\u7968\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u5834\u5408\u306f\u3001\u51fa\u529b\u6642\u70b9\u3067\u8a08\u7b97\u7d50\u679c\u304c\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30b7\u30fc\u30c8\u304c\u306a\u3044\u5834\u5408\u3082\u30a8\u30e9\u30fc\u3068\u3057\u3066\u6b8b\u3059<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e33\u7968\u306e\u30b7\u30fc\u30c8\u540d\u304c\u5909\u308f\u3063\u3066\u3044\u308b\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u6307\u5b9a\u3057\u305f\u30b7\u30fc\u30c8\u304c\u306a\u3051\u308c\u3070\u3001\u305d\u306e\u6642\u70b9\u3067\u30a8\u30e9\u30fc\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if sheet_name not in workbook.sheetnames:\n    return &#91;error(workbook_path, \"\", f\"\u30b7\u30fc\u30c8\u300c{sheet_name}\u300d\u304c\u3042\u308a\u307e\u305b\u3093\")&#93;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> sheet_name <\/span><span style=\"color: #81A1C1\">not<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> workbook<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">sheetnames<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #88C0D0\">error<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">workbook_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;\u30b7\u30fc\u30c8\u300c<\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">sheet_name<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">\u300d\u304c\u3042\u308a\u307e\u305b\u3093&quot;<\/span><span style=\"color: #ECEFF4\">)&#93;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b7\u30fc\u30c8\u304c\u306a\u3044\u72b6\u614b\u3067\u5f8c\u7d9a\u51e6\u7406\u3092\u7d9a\u3051\u308b\u3068\u3001\u539f\u56e0\u304c\u5206\u304b\u308a\u306b\u304f\u304f\u306a\u308a\u307e\u3059\u3002\u5148\u306b\u300c\u6307\u5b9a\u30b7\u30fc\u30c8\u304c\u306a\u3044\u300d\u3068\u51fa\u3057\u305f\u65b9\u304c\u3001\u78ba\u8a8d\u62c5\u5f53\u8005\u306f\u3059\u3050\u306b\u5224\u65ad\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30a8\u30e9\u30fc\u306f\u6700\u5f8c\u306b\u307e\u3068\u3081\u3066CSV\u3078\u6e21\u3059<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>check_workbook()<\/code> \u306f\u30011\u3064\u306eExcel\u30d5\u30a1\u30a4\u30eb\u3067\u898b\u3064\u304b\u3063\u305f\u30a8\u30e9\u30fc\u3092\u914d\u5217\u3067\u8fd4\u3057\u307e\u3059\u3002\u30e1\u30a4\u30f3\u51e6\u7406\u3067\u306f\u3001\u305d\u308c\u3092 <code>errors<\/code> \u306b\u96c6\u3081\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u753b\u9762\u306b\u3059\u3050\u8868\u793a\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u6700\u5f8c\u306b\u307e\u3068\u3081\u3066CSV\u3078\u66f8\u304d\u51fa\u3057\u307e\u3059\u3002\u78ba\u8a8d\u7d50\u679c\u3092\u6b8b\u3059\u3053\u3068\u304c\u76ee\u7684\u306a\u306e\u3067\u3001\u753b\u9762\u8868\u793a\u3060\u3051\u3067\u7d42\u308f\u3089\u305b\u306a\u3044\u5f62\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7a7a\u6b04\u3068\u660e\u7d30\u91d1\u984d\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u5fc5\u9808\u30bb\u30eb\u304c\u7a7a\u306a\u3089\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u30bb\u30eb\u3092\u8a18\u9332\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5fc5\u9808\u30bb\u30eb\u306e\u30c1\u30a7\u30c3\u30af\u306f\u3001<code>required_cells<\/code> \u3092\u9806\u756a\u306b\u898b\u308b\u3060\u3051\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>def check_required_cells(workbook_path, sheet, rules, errors):\n    for cell, label in rules&#91;\"required_cells\"&#93;.items():\n        if is_blank(sheet&#91;cell&#93;.value):\n            errors.append(error(workbook_path, cell, f\"{label}\u304c\u7a7a\u3067\u3059\"))<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">check_required_cells<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">workbook_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">sheet<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">rules<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">errors<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> cell<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> label <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> rules<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">required_cells<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">&#93;.<\/span><span style=\"color: #88C0D0\">items<\/span><span style=\"color: #ECEFF4\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">is_blank<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">sheet<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #D8DEE9FF\">cell<\/span><span style=\"color: #ECEFF4\">&#93;.<\/span><span style=\"color: #D8DEE9FF\">value<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            errors<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">append<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">error<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">workbook_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cell<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">label<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">\u304c\u7a7a\u3067\u3059&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a8\u30e9\u30fc\u306b\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u540d\u3001\u30bb\u30eb\u4f4d\u7f6e\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6b8b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>def error(workbook_path, cell, message):\n    return {\n        \"file\": workbook_path.name,\n        \"cell\": cell,\n        \"level\": \"error\",\n        \"message\": message\n    }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">error<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">workbook_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">cell<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">message<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">file<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> workbook_path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">name<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">cell<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> cell<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">level<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">error<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">message<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\"> message<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u5f62\u306b\u3057\u3066\u304a\u304f\u3068\u3001CSV\u3092\u898b\u305f\u4eba\u304c\u5bfe\u8c61\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u3001\u8a72\u5f53\u30bb\u30eb\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u660e\u7d30\u884c\u304c\u7a7a\u306a\u3089\u672a\u4f7f\u7528\u884c\u3068\u3057\u3066\u98db\u3070\u3059<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u660e\u7d30\u884c\u306b\u306f\u3001\u4f7f\u308f\u308c\u3066\u3044\u306a\u3044\u7a7a\u884c\u304c\u3042\u308a\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001\u54c1\u540d\u3001\u6570\u91cf\u3001\u5358\u4fa1\u3001\u91d1\u984d\u304c\u3059\u3079\u3066\u7a7a\u306a\u3089\u3001\u305d\u306e\u884c\u306f\u672a\u4f7f\u7528\u3068\u3057\u3066\u98db\u3070\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if is_blank(item) and is_blank(quantity) and is_blank(unit_price) and is_blank(amount):\n    continue<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">is_blank<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">item<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">is_blank<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">quantity<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">is_blank<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">unit_price<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">and<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">is_blank<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">amount<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">continue<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3092\u5165\u308c\u306a\u3044\u3068\u3001\u672a\u4f7f\u7528\u884c\u307e\u3067\u300c\u54c1\u540d\u304c\u7a7a\u3067\u3059\u300d\u300c\u6570\u91cf\u304c\u7a7a\u3067\u3059\u300d\u3068\u51fa\u3066\u3057\u307e\u3044\u307e\u3059\u3002\u5e33\u7968\u78ba\u8a8d\u3067\u306f\u3001\u7a7a\u884c\u3068\u5165\u529b\u6f0f\u308c\u3092\u5206\u3051\u308b\u3053\u3068\u304c\u5927\u4e8b\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u6570\u91cf\u3001\u5358\u4fa1\u3001\u91d1\u984d\u3092\u6570\u5024\u3068\u3057\u3066\u8aad\u3080<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u91cf\u3001\u5358\u4fa1\u3001\u91d1\u984d\u306f\u3001\u6570\u5024\u3068\u3057\u3066\u8aad\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>quantity_value = to_decimal(quantity)\nunit_price_value = to_decimal(unit_price)\namount_value = to_decimal(amount)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">quantity_value <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">to_decimal<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">quantity<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">unit_price_value <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">to_decimal<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">unit_price<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">amount_value <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">to_decimal<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">amount<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30f3\u30d7\u30eb\u3067\u306f <code>Decimal<\/code> \u306b\u5909\u63db\u3057\u3066\u3044\u307e\u3059\u3002\u91d1\u984d\u8a08\u7b97\u3067\u306f\u5c0f\u6570\u306e\u6271\u3044\u3084\u4e38\u3081\u304c\u7d61\u3080\u305f\u3081\u3001\u5358\u7d14\u306a\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3088\u308a\u6271\u3044\u3084\u3059\u3044\u304b\u3089\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u5024\u3068\u3057\u3066\u8aad\u3081\u306a\u3044\u5834\u5408\u306f\u3001\u8a08\u7b97\u306b\u9032\u307e\u305a\u30a8\u30e9\u30fc\u306b\u3057\u307e\u3059\u3002\u7a7a\u6b04\u3068\u6570\u5024\u4e0d\u6b63\u3092\u5206\u3051\u3066\u51fa\u305b\u308b\u3088\u3046\u306b\u3057\u3066\u304a\u304f\u3068\u3001\u539f\u56e0\u3092\u8ffd\u3044\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u91d1\u984d\u304c\u6570\u91cf\u00d7\u5358\u4fa1\u3068\u9055\u3048\u3070\u30a8\u30e9\u30fc\u306b\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u5024\u3068\u3057\u3066\u8aad\u3081\u305f\u3089\u3001\u660e\u7d30\u91d1\u984d\u306e\u671f\u5f85\u5024\u3092\u4f5c\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>expected_amount = quantity_value * unit_price_value\nif amount_value != expected_amount:\n    errors.append(error(workbook_path, amount_cell, f\"\u91d1\u984d\u304c\u6570\u91cf\u00d7\u5358\u4fa1\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u671f\u5f85\u5024: {expected_amount}\"))<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">expected_amount <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> quantity_value <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\"> unit_price_value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> amount_value <\/span><span style=\"color: #81A1C1\">!=<\/span><span style=\"color: #D8DEE9FF\"> expected_amount<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    errors<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">append<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">error<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">workbook_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> amount_cell<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;\u91d1\u984d\u304c\u6570\u91cf\u00d7\u5358\u4fa1\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u671f\u5f85\u5024: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">expected_amount<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u51e6\u7406\u306f\u5730\u5473\u3067\u3059\u304c\u3001\u76ee\u8996\u3067\u7e70\u308a\u8fd4\u3059\u3068\u75b2\u308c\u307e\u3059\u3002\u7279\u306b\u660e\u7d30\u884c\u304c\u591a\u3044\u5e33\u7968\u3067\u306f\u3001\u5148\u306b\u6a5f\u68b0\u3067\u62fe\u3046\u4fa1\u5024\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5c0f\u8a08\u3001\u6d88\u8cbb\u7a0e\u3001\u5408\u8a08\u91d1\u984d\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u660e\u7d30\u91d1\u984d\u3092\u8db3\u3057\u3066\u5c0f\u8a08\u306e\u671f\u5f85\u5024\u3092\u4f5c\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u660e\u7d30\u884c\u3092\u898b\u306a\u304c\u3089\u3001\u91d1\u984d\u3092\u5408\u8a08\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>total += amount_value<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">total <\/span><span style=\"color: #81A1C1\">+=<\/span><span style=\"color: #D8DEE9FF\"> amount_value<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u5408\u8a08\u5024\u304c\u3001\u5e33\u7968\u4e0a\u306e\u5c0f\u8a08\u3068\u4e00\u81f4\u3059\u308b\u304b\u3092\u5f8c\u3067\u898b\u307e\u3059\u3002\u5e33\u7968\u4e0a\u306e\u5c0f\u8a08\u3092\u305d\u306e\u307e\u307e\u4fe1\u7528\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u660e\u7d30\u304b\u3089\u671f\u5f85\u5024\u3092\u4f5c\u308b\u306e\u304c\u30dd\u30a4\u30f3\u30c8\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7a0e\u7387\u3068\u4e38\u3081\u65b9\u3092\u6c7a\u3081\u3066\u6d88\u8cbb\u7a0e\u3092\u8a08\u7b97\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001\u7a0e\u7387\u3092 <code>rules.json<\/code> \u304b\u3089\u8aad\u307f\u3001\u5186\u5358\u4f4d\u3067\u56db\u6368\u4e94\u5165\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>expected_tax = yen(detail_total * Decimal(str(totals&#91;\"tax_rate\"&#93;)))\nexpected_total = detail_total + expected_tax<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">expected_tax <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">yen<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">detail_total <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Decimal<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">totals<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">tax_rate<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">&#93;)))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">expected_total <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> detail_total <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> expected_tax<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e38\u3081\u51e6\u7406\u306f\u6b21\u306e\u95a2\u6570\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>def yen(value):\n    return value.quantize(Decimal(\"1\"), rounding=ROUND_HALF_UP)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">yen<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">value<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> value<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">quantize<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">Decimal<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">1<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">),<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">rounding<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">ROUND_HALF_UP<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u306f\u5b9f\u52d9\u3067\u5fc5\u305a\u78ba\u8a8d\u3059\u308b\u3068\u3053\u308d\u3067\u3059\u3002\u7a0e\u8a08\u7b97\u306f\u3001\u660e\u7d30\u5358\u4f4d\u3067\u4e38\u3081\u308b\u306e\u304b\u3001\u8acb\u6c42\u66f8\u5358\u4f4d\u3067\u4e38\u3081\u308b\u306e\u304b\u3001\u5207\u308a\u6368\u3066\u306a\u306e\u304b\u3001\u56db\u6368\u4e94\u5165\u306a\u306e\u304b\u3067\u7d50\u679c\u304c\u5909\u308f\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5e33\u7968\u4e0a\u306e\u5408\u8a08\u91d1\u984d\u3068\u671f\u5f85\u5024\u3092\u6bd4\u3079\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c0f\u8a08\u3084\u5408\u8a08\u91d1\u984d\u304c\u671f\u5f85\u5024\u3068\u9055\u3048\u3070\u3001\u8a72\u5f53\u30bb\u30eb\u3092\u30a8\u30e9\u30fc\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>if subtotal != detail_total:\n    errors.append(error(workbook_path, totals&#91;\"subtotal_cell\"&#93;, f\"\u5c0f\u8a08\u304c\u660e\u7d30\u5408\u8a08\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u671f\u5f85\u5024: {detail_total}\"))\n\nif total != expected_total:\n    errors.append(error(workbook_path, totals&#91;\"total_cell\"&#93;, f\"\u5408\u8a08\u91d1\u984d\u304c\u5c0f\u8a08+\u6d88\u8cbb\u7a0e\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u671f\u5f85\u5024: {expected_total}\"))<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> subtotal <\/span><span style=\"color: #81A1C1\">!=<\/span><span style=\"color: #D8DEE9FF\"> detail_total<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    errors<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">append<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">error<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">workbook_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> totals<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">subtotal_cell<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">&#93;,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;\u5c0f\u8a08\u304c\u660e\u7d30\u5408\u8a08\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u671f\u5f85\u5024: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">detail_total<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> total <\/span><span style=\"color: #81A1C1\">!=<\/span><span style=\"color: #D8DEE9FF\"> expected_total<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    errors<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">append<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">error<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">workbook_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> totals<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">total_cell<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">&#93;,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;\u5408\u8a08\u91d1\u984d\u304c\u5c0f\u8a08+\u6d88\u8cbb\u7a0e\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u671f\u5f85\u5024: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">expected_total<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a8\u30e9\u30fc\u306b\u306f\u671f\u5f85\u5024\u3082\u5165\u308c\u3066\u3044\u307e\u3059\u3002\u5358\u306b\u300c\u5408\u8a08\u91d1\u984d\u304c\u9055\u3046\u300d\u3068\u51fa\u3059\u3088\u308a\u3001\u78ba\u8a8d\u6642\u306b\u3069\u3061\u3089\u3078\u76f4\u3059\u3079\u304d\u304b\u5224\u65ad\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002<span class=\"swl-marker mark_yellow\">\u30a8\u30e9\u30fcCSV\u306b\u306f\u3001\u78ba\u8a8d\u62c5\u5f53\u8005\u304c\u6b21\u306b\u958b\u304f\u30d5\u30a1\u30a4\u30eb\u3068\u30bb\u30eb\u3092\u6b8b\u3059<\/span> \u3053\u3068\u304c\u5927\u4e8b\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e38\u3081\u30eb\u30fc\u30eb\u306f\u5b9f\u969b\u306e\u30b7\u30b9\u30c6\u30e0\u306b\u5408\u308f\u305b\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30f3\u30d7\u30eb\u306e\u4e38\u3081\u65b9\u306f\u3001\u3042\u304f\u307e\u3067\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u969b\u306e\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u3001\u7a0e\u7387\u3001\u8ab2\u7a0e\u533a\u5206\u3001\u7aef\u6570\u51e6\u7406\u3001\u7a0e\u8fbc\u30fb\u7a0e\u629c\u3001\u8efd\u6e1b\u7a0e\u7387\u306a\u3069\u304c\u7d61\u3080\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f7f\u3046\u306a\u3089\u3001\u307e\u305a\u81ea\u5206\u306e\u30b7\u30b9\u30c6\u30e0\u304c\u3069\u3046\u8a08\u7b97\u3057\u3066\u3044\u308b\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u521d\u304b\u3089\u7a0e\u533a\u5206\u307e\u3067\u5168\u90e8\u898b\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u305f\u3060\u3001\u5408\u8a08\u91d1\u984d\u3092\u30c1\u30a7\u30c3\u30af\u5bfe\u8c61\u306b\u3059\u308b\u306a\u3089\u3001\u4e38\u3081\u65b9\u3060\u3051\u306f\u66d6\u6627\u306b\u3057\u306a\u3044\u65b9\u304c\u3088\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><code>result.csv<\/code> \u3092\u78ba\u8a8d\u8a18\u9332\u3068\u3057\u3066\u4f7f\u3046<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u30d5\u30a1\u30a4\u30eb\u540d\u3001\u30bb\u30eb\u3001\u30a8\u30e9\u30fc\u5185\u5bb9\u3092\u6b8b\u3059<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a8\u30e9\u30fc\u306fCSV\u306b\u51fa\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Python<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>def write_result(path, errors):\n    with path.open(\"w\", newline=\"\", encoding=\"utf-8-sig\") as output:\n        writer = csv.DictWriter(output, fieldnames=&#91;\"file\", \"cell\", \"level\", \"message\"&#93;)\n        writer.writeheader()\n        writer.writerows(errors)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">write_result<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">errors<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">with<\/span><span style=\"color: #D8DEE9FF\"> path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">open<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">w<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">newline<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">encoding<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">utf-8-sig<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> output<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        writer <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> csv<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">DictWriter<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">output<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">fieldnames<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">file<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">cell<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">level<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">message<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">&#93;)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        writer<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">writeheader<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        writer<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">writerows<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">errors<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><code>utf-8-sig<\/code> \u306b\u3057\u3066\u3044\u308b\u306e\u306f\u3001Excel\u3067CSV\u3092\u958b\u3044\u305f\u3068\u304d\u306b\u6587\u5b57\u5316\u3051\u3057\u306b\u304f\u304f\u3059\u308b\u305f\u3081\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u51fa\u529b\u3059\u308b\u5217\u306f\u6b21\u306e4\u3064\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-table\" style=\"margin-bottom:2em\"><table><thead><tr><th>\u5217<\/th><th>\u610f\u5473<\/th><\/tr><\/thead><tbody><tr><td>file<\/td><td>\u554f\u984c\u304c\u898b\u3064\u304b\u3063\u305fExcel\u30d5\u30a1\u30a4\u30eb\u540d<\/td><\/tr><tr><td>cell<\/td><td>\u78ba\u8a8d\u3059\u3079\u304d\u30bb\u30eb\u4f4d\u7f6e<\/td><\/tr><tr><td>level<\/td><td>\u30a8\u30e9\u30fc\u3084\u8b66\u544a\u306e\u533a\u5206<\/td><\/tr><tr><td>message<\/td><td>\u4f55\u304c\u554f\u984c\u304b\u3092\u793a\u3059\u8aac\u660e<\/td><\/tr><\/tbody><\/table><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u30a8\u30e9\u30fc\u304c\u3042\u308b\u5e33\u7968\u3060\u3051\u3092\u958b\u3044\u3066\u78ba\u8a8d\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30f3\u30d7\u30eb\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u6b21\u306e\u3088\u3046\u306aCSV\u304c\u51fa\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Markdown<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>file,cell,level,message\nsample_invoice_002_missing_customer.xlsx,B5,error,\u8acb\u6c42\u5148\u540d\u304c\u7a7a\u3067\u3059\nsample_invoice_003_wrong_total.xlsx,F20,error,\u5408\u8a08\u91d1\u984d\u304c\u5c0f\u8a08+\u6d88\u8cbb\u7a0e\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u671f\u5f85\u5024: 137500<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">file,cell,level,message<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">sample_invoice_002_missing_customer.xlsx,B5,error,\u8acb\u6c42\u5148\u540d\u304c\u7a7a\u3067\u3059<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">sample_invoice_003_wrong_total.xlsx,F20,error,\u5408\u8a08\u91d1\u984d\u304c\u5c0f\u8a08+\u6d88\u8cbb\u7a0e\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u671f\u5f85\u5024: 137500<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u7d50\u679c\u304c\u3042\u308c\u3070\u3001\u78ba\u8a8d\u62c5\u5f53\u8005\u306f\u5168\u30d5\u30a1\u30a4\u30eb\u3092\u9806\u756a\u306b\u958b\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002<code>sample_invoice_002_missing_customer.xlsx<\/code> \u306eB5\u3092\u898b\u308b\u3002<code>sample_invoice_003_wrong_total.xlsx<\/code> \u306eF20\u3092\u898b\u308b\u3002\u305d\u3046\u3044\u3046\u78ba\u8a8d\u306b\u5909\u3048\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n<div class=\"swell-block-balloon\"><div class=\"c-balloon -bln-left\" data-col=\"gray\"><div class=\"c-balloon__icon -circle\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.nexive.tech\/wp-content\/uploads\/2026\/05\/big-smile-150x150.png\" alt=\"\" class=\"c-balloon__iconImg\" width=\"80px\" height=\"80px\"><span class=\"c-balloon__iconName\">tomo<\/span><\/div><div class=\"c-balloon__body -speaking -border-on\"><div class=\"c-balloon__text\">\n<p>\u3053\u306eCSV\u304c\u51fa\u308b\u3060\u3051\u3067\u3082\u3001\u78ba\u8a8d\u4f5c\u696d\u306f\u304b\u306a\u308a\u5909\u308f\u308a\u307e\u3059\u3002\u5168\u90e8\u306e\u5e33\u7968\u3092\u958b\u304f\u524d\u306b\u3001\u307e\u305a\u898b\u308b\u3079\u304d\u30d5\u30a1\u30a4\u30eb\u3068\u30bb\u30eb\u3092\u7d5e\u308c\u307e\u3059\u3002<\/p>\n<span class=\"c-balloon__shapes\"><span class=\"c-balloon__before\"><\/span><span class=\"c-balloon__after\"><\/span><\/span><\/div><\/div><\/div><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u4fee\u6b63\u5f8c\u306b\u518d\u51fa\u529b\u3057\u3066\u540c\u3058\u30c1\u30a7\u30c3\u30af\u3092\u6d41\u3059<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u5074\u3092\u76f4\u3057\u305f\u3089\u3001\u5e33\u7968\u3092\u518d\u51fa\u529b\u3057\u3001\u540c\u3058\u30b3\u30de\u30f3\u30c9\u3092\u3082\u3046\u4e00\u5ea6\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540c\u3058 <code>rules.json<\/code> \u3092\u4f7f\u3046\u306e\u3067\u3001\u78ba\u8a8d\u6761\u4ef6\u306f\u5909\u308f\u308a\u307e\u305b\u3093\u3002\u524d\u56de\u3068\u540c\u3058\u89b3\u70b9\u3067\u518d\u30c1\u30a7\u30c3\u30af\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u7e70\u308a\u8fd4\u3057\u304c\u3067\u304d\u308b\u3068\u3001\u30ea\u30ea\u30fc\u30b9\u524d\u78ba\u8a8d\u3067\u8aac\u660e\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002\u300c\u76ee\u8996\u3067\u898b\u307e\u3057\u305f\u300d\u3060\u3051\u3067\u306a\u304f\u3001\u300c\u5fc5\u9808\u30bb\u30eb\u3068\u91d1\u984d\u6574\u5408\u6027\u306f\u3053\u306e\u30eb\u30fc\u30eb\u3067\u78ba\u8a8d\u3057\u3001\u30a8\u30e9\u30fcCSV\u304c\u7a7a\u306b\u306a\u308b\u307e\u3067\u518d\u78ba\u8a8d\u3057\u307e\u3057\u305f\u300d\u3068\u8a00\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CSV\u3092\u6b8b\u3059\u3068\u518d\u78ba\u8a8d\u306e\u8aac\u660e\u304c\u3057\u3084\u3059\u3044<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u78ba\u8a8d\u7d50\u679c\u304c\u753b\u9762\u306b\u6d41\u308c\u308b\u3060\u3051\u3060\u3068\u3001\u3042\u3068\u304b\u3089\u898b\u8fd4\u305b\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CSV\u3068\u3057\u3066\u6b8b\u3057\u3066\u304a\u3051\u3070\u3001\u4fee\u6b63\u524d\u5f8c\u306e\u78ba\u8a8d\u7d50\u679c\u3092\u6bd4\u8f03\u3067\u304d\u307e\u3059\u3002\u62c5\u5f53\u8005\u306b\u6e21\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u30ec\u30d3\u30e5\u30fc\u3067\u300c\u3069\u306e\u5e33\u7968\u3092\u898b\u305f\u306e\u304b\u300d\u3068\u805e\u304b\u308c\u305f\u3068\u304d\u306b\u3082\u3001\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u30bb\u30eb\u4f4d\u7f6e\u304c\u6b8b\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n<div class=\"swell-block-balloon\"><div class=\"c-balloon -bln-left\" data-col=\"gray\"><div class=\"c-balloon__icon -circle\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.nexive.tech\/wp-content\/uploads\/2026\/05\/concern-150x150.png\" alt=\"\" class=\"c-balloon__iconImg\" width=\"80px\" height=\"80px\"><span class=\"c-balloon__iconName\">tomo<\/span><\/div><div class=\"c-balloon__body -speaking -border-on\"><div class=\"c-balloon__text\">\n<p>\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u76ee\u7684\u306f\u3001\u4eba\u306e\u5224\u65ad\u3092\u6d88\u3059\u3053\u3068\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u78ba\u8a8d\u3059\u308b\u5834\u6240\u3092\u6e1b\u3089\u3057\u3001\u78ba\u8a8d\u7d50\u679c\u3092\u6b8b\u3057\u3084\u3059\u304f\u3059\u308b\u3053\u3068\u3067\u3059\u3002<\/p>\n<span class=\"c-balloon__shapes\"><span class=\"c-balloon__before\"><\/span><span class=\"c-balloon__after\"><\/span><\/span><\/div><\/div><\/div><\/div>\n\n\n<h2 class=\"wp-block-heading\">\u5b9f\u969b\u306b\u30b5\u30f3\u30d7\u30eb\u3092\u52d5\u304b\u3057\u3066\u78ba\u8a8d\u3059\u308b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306e\u5834\u6240\u3078\u79fb\u52d5\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u7f6e\u304d\u5834\u306e <code>python\/excel-report-batch-check\/<\/code> \u306b\u79fb\u52d5\u3057\u3066\u304b\u3089\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e2d\u8eab\u306f\u6b21\u306e\u3088\u3046\u306a\u69cb\u6210\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Markdown<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>python\/excel-report-batch-check\/\n  README.md\n  requirements.txt\n  check_reports.py\n  rules.json\n  samples\/\n    sample_invoice_001_ok.xlsx\n    sample_invoice_002_missing_customer.xlsx\n    sample_invoice_003_wrong_total.xlsx<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">python\/excel-report-batch-check\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  README.md<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  requirements.txt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  check_reports.py<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  rules.json<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  samples\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    sample_invoice_001_ok.xlsx<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    sample_invoice_002_missing_customer.xlsx<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    sample_invoice_003_wrong_total.xlsx<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u3063\u3066\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u5165\u308c\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Windows PowerShell\u306a\u3089\u3001\u6b21\u306e\u3088\u3046\u306b\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">PowerShell<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>python -m venv .venv\n.\\.venv\\Scripts\\python -m pip install -r requirements.txt<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">python <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">m venv .venv<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">.\\.venv\\Scripts\\python <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">m pip install <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">r requirements.txt<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><code>requirements.txt<\/code> \u306b\u306f <code>openpyxl<\/code> \u3092\u5165\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30c1\u30a7\u30c3\u30af\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30f3\u30d7\u30eb\u306eExcel\u306b\u5bfe\u3057\u3066\u30c1\u30a7\u30c3\u30af\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">PowerShell<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>.\\.venv\\Scripts\\python check_reports.py samples rules.json --out result.csv<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">.\\.venv\\Scripts\\python check_reports.py samples rules.json <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9FF\">out result.csv<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b5\u30f3\u30d7\u30eb\u306b\u306f\u30a8\u30e9\u30fc\u5165\u308a\u306e\u8acb\u6c42\u66f8\u3092\u542b\u3081\u3066\u3044\u308b\u305f\u3081\u3001\u5b9f\u884c\u7d50\u679c\u306fNG\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440\"><span style=\"background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440\">Markdown<\/span><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>NG: 2\u4ef6\u306e\u554f\u984c\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002\u7d50\u679c: result.csv<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">NG: 2\u4ef6\u306e\u554f\u984c\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002\u7d50\u679c: result.csv<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u306f\u5931\u6557\u3067\u306f\u306a\u304f\u3001\u30b5\u30f3\u30d7\u30eb\u3068\u3057\u3066\u671f\u5f85\u3057\u3066\u3044\u308b\u7d50\u679c\u3067\u3059\u3002<code>result.csv<\/code> \u3092\u958b\u304d\u3001\u8acb\u6c42\u5148\u540d\u306e\u7a7a\u6b04\u3068\u5408\u8a08\u91d1\u984d\u30ba\u30ec\u304c\u51fa\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u6b63\u5e38\u306b\u3057\u305f\u3089 <code>result.csv<\/code> \u304c\u7a7a\u306b\u8fd1\u3065\u304f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u52d9\u3067\u306f\u3001\u30a8\u30e9\u30fc\u304c\u51fa\u305f\u5e33\u7968\u3092\u76f4\u3057\u3001\u518d\u51fa\u529b\u3057\u3001\u3082\u3046\u4e00\u5ea6\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u6d41\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7d42\u7684\u306b\u306f\u3001<code>result.csv<\/code> \u306b\u30a8\u30e9\u30fc\u884c\u304c\u51fa\u306a\u3044\u72b6\u614b\u3092\u76ee\u6307\u3057\u307e\u3059\u3002\u305d\u3053\u307e\u3067\u78ba\u8a8d\u3067\u304d\u305f\u3089\u3001\u6b21\u306b\u4eba\u304c\u30ec\u30a4\u30a2\u30a6\u30c8\u3084\u4f8b\u5916\u8868\u793a\u3092\u898b\u307e\u3059\u3002<span class=\"swl-marker mark_yellow\">\u5024\u306e\u78ba\u8a8d\u3092\u5148\u306b\u7d42\u308f\u3089\u305b\u3066\u304b\u3089\u3001\u898b\u305f\u76ee\u306e\u78ba\u8a8d\u306b\u79fb\u308b<\/span> \u3068\u3044\u3046\u9806\u756a\u306b\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u9806\u756a\u306b\u3059\u308b\u3068\u3001\u76ee\u8996\u78ba\u8a8d\u306e\u524d\u306b\u5206\u304b\u308b\u554f\u984c\u3092\u5148\u306b\u6f70\u305b\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b9f\u52d9\u3067\u6700\u521d\u306b\u76ee\u6307\u3059\u72b6\u614b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u307e\u305a\u306f\u5fc5\u9808\u30bb\u30eb\u3068\u5408\u8a08\u91d1\u984d\u3060\u3051\u3067\u3088\u3044<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u521d\u304b\u3089\u5e33\u7968\u306e\u3059\u3079\u3066\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001\u3059\u3050\u91cd\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306f\u3001\u8acb\u6c42\u5148\u540d\u306e\u7a7a\u6b04\u3001\u660e\u7d30\u91d1\u984d\u3001\u5c0f\u8a08\u3001\u6d88\u8cbb\u7a0e\u3001\u5408\u8a08\u91d1\u984d\u3060\u3051\u3067\u5341\u5206\u3067\u3059\u3002\u3053\u306e\u7bc4\u56f2\u3067\u3082\u3001\u76ee\u8996\u78ba\u8a8d\u306e\u524d\u306b\u62fe\u3048\u308b\u554f\u984c\u306f\u304b\u306a\u308a\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7279\u306b\u3001\u6539\u4fee\u5f8c\u306e\u56de\u5e30\u78ba\u8a8d\u3067\u306f\u300c\u524d\u3068\u540c\u3058\u6761\u4ef6\u3067\u4f55\u5ea6\u3082\u78ba\u8a8d\u3067\u304d\u308b\u300d\u3053\u3068\u304c\u52b9\u304d\u307e\u3059\u3002\u5bfe\u8c61\u3092\u7d5e\u3063\u3066\u3067\u3082\u3001\u540c\u3058\u78ba\u8a8d\u3092\u7e70\u308a\u8fd4\u305b\u308b\u5f62\u306b\u3057\u3066\u304a\u304f\u65b9\u304c\u4f7f\u3044\u3084\u3059\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>result.csv<\/code> \u304c\u7a7a\u306b\u306a\u308b\u307e\u3067\u7e70\u308a\u8fd4\u305b\u308b\u3088\u3046\u306b\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u521d\u306e\u5230\u9054\u70b9\u306f\u3001<code>result.csv<\/code> \u3092\u78ba\u8a8d\u8a18\u9332\u3068\u3057\u3066\u4f7f\u3048\u308b\u72b6\u614b\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a8\u30e9\u30fc\u304c\u51fa\u305f\u3089\u3001\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u30bb\u30eb\u4f4d\u7f6e\u3092\u898b\u3066\u76f4\u3059\u3002\u5e33\u7968\u3092\u518d\u51fa\u529b\u3059\u308b\u3002\u540c\u3058\u30b3\u30de\u30f3\u30c9\u3092\u3082\u3046\u4e00\u5ea6\u5b9f\u884c\u3059\u308b\u3002\u30a8\u30e9\u30fc\u304c\u6d88\u3048\u308b\u307e\u3067\u7e70\u308a\u8fd4\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u307e\u3067\u3067\u304d\u308c\u3070\u3001\u78ba\u8a8d\u4f5c\u696d\u306f\u304b\u306a\u308a\u6574\u7406\u3055\u308c\u307e\u3059\u3002\u4eba\u304c\u5168\u90e8\u3092\u899a\u3048\u3066\u304a\u304f\u5fc5\u8981\u304c\u306a\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30ec\u30a4\u30a2\u30a6\u30c8\u78ba\u8a8d\u306f\u6700\u5f8c\u306b\u4eba\u304c\u898b\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5024\u306e\u78ba\u8a8d\u304c\u7d42\u308f\u3063\u3066\u3082\u3001\u5e33\u7968\u78ba\u8a8d\u304c\u7d42\u308f\u3063\u305f\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5370\u5b57\u4f4d\u7f6e\u3001\u6587\u5b57\u5207\u308c\u3001\u6539\u30da\u30fc\u30b8\u3001\u5f97\u610f\u5148\u3054\u3068\u306e\u8868\u793a\u306f\u3001\u6700\u5f8c\u306b\u4eba\u304c\u898b\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u305d\u306e\u6642\u70b9\u3067\u306f\u7a7a\u6b04\u3084\u5408\u8a08\u91d1\u984d\u30ba\u30ec\u306e\u78ba\u8a8d\u306f\u7d42\u308f\u3063\u3066\u3044\u307e\u3059\u3002\u4eba\u306f\u898b\u305f\u76ee\u306e\u78ba\u8a8d\u306b\u96c6\u4e2d\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u5206\u62c5\u304c\u5927\u4e8b\u3067\u3059\u3002\u6a5f\u68b0\u3067\u62fe\u3048\u308b\u3082\u306e\u3092\u5148\u306b\u62fe\u3044\u3001\u4eba\u306f\u4eba\u304c\u898b\u308b\u3079\u304d\u3068\u3053\u308d\u3092\u898b\u308b\u3002\u5e33\u7968\u78ba\u8a8d\u3067\u306f\u3001\u3053\u306e\u5207\u308a\u5206\u3051\u304c\u4e00\u756a\u52b9\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u6b21\u306b\u5897\u3084\u3059\u306a\u3089\u30de\u30b9\u30bf\u7167\u5408\u3084\u7a0e\u533a\u5206\u30c1\u30a7\u30c3\u30af\u306b\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u306b\u5e83\u3052\u308b\u306a\u3089\u3001\u78ba\u8a8d\u9805\u76ee\u3092\u5c11\u3057\u305a\u3064\u5897\u3084\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305f\u3068\u3048\u3070\u3001\u8acb\u6c42\u5148\u540d\u3092\u5f97\u610f\u5148\u30de\u30b9\u30bf\u3068\u7167\u5408\u3059\u308b\u3002\u54c1\u756a\u304c\u5b58\u5728\u3059\u308b\u304b\u78ba\u8a8d\u3059\u308b\u3002\u7a0e\u533a\u5206\u3054\u3068\u306b\u7a0e\u7387\u3092\u5909\u3048\u308b\u3002\u8acb\u6c42\u66f8\u756a\u53f7\u306e\u91cd\u8907\u3092\u78ba\u8a8d\u3059\u308b\u3002\u3053\u3046\u3057\u305f\u78ba\u8a8d\u306f\u3001\u7a7a\u6b04\u3068\u91d1\u984d\u30ba\u30ec\u306e\u6b21\u306b\u691c\u8a0e\u3057\u3084\u3059\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305f\u3060\u3057\u3001\u5897\u3084\u3059\u305f\u3073\u306b\u3001\u78ba\u8a8d\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u4fdd\u5b88\u3082\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u6700\u521d\u304b\u3089\u5927\u304d\u304f\u4f5c\u308b\u3088\u308a\u3001<code>rules.json<\/code> \u3068CSV\u51fa\u529b\u306e\u5f62\u3092\u4fdd\u3063\u305f\u307e\u307e\u3001\u5fc5\u8981\u306a\u78ba\u8a8d\u30921\u3064\u305a\u3064\u8db3\u3059\u65b9\u304c\u73fe\u5834\u3067\u306f\u7d9a\u3051\u3084\u3059\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76ee\u8996\u78ba\u8a8d\u3092\u306a\u304f\u3059\u306e\u3067\u306f\u306a\u304f\u3001\u76ee\u8996\u306b\u5165\u308b\u524d\u306e\u5358\u7d14\u306a\u78ba\u8a8d\u3092\u6e1b\u3089\u3059\u3002Python\u3068openpyxl\u306f\u3001\u305d\u306e\u305f\u3081\u306e\u9053\u5177\u3068\u3057\u3066\u4f7f\u3046\u306e\u304c\u3061\u3087\u3046\u3069\u3088\u3044\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u696d\u52d9\u30b7\u30b9\u30c6\u30e0\u304c\u51fa\u529b\u3057\u305fExcel\u5e33\u7968\u3092\u3001Python openpyxl\u3067\u307e\u3068\u3081\u3066\u78ba\u8a8d\u3059\u308b\u65b9\u6cd5\u3092\u6574\u7406\u3057\u307e\u3059\u3002\u5fc5\u9808\u30bb\u30eb\u306e\u7a7a\u6b04\u3001\u660e\u7d30\u91d1\u984d\u3001\u5408\u8a08\u91d1\u984d\u306e\u30ba\u30ec\u3092CSV\u306b\u6b8b\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"author":1,"featured_media":1854,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","footnotes":""},"categories":[243],"tags":[245,246,247],"class_list":["post-1830","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-automation","tag-python","tag-openpyxl","tag-excel"],"_links":{"self":[{"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=\/wp\/v2\/posts\/1830","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1830"}],"version-history":[{"count":2,"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=\/wp\/v2\/posts\/1830\/revisions"}],"predecessor-version":[{"id":1832,"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=\/wp\/v2\/posts\/1830\/revisions\/1832"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=\/wp\/v2\/media\/1854"}],"wp:attachment":[{"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1830"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1830"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nexive.tech\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1830"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}