データベース、分析パイプライン、レポートダッシュボードに供給する必要があるXLSとXLSXファイルのフォルダがあり — ターゲットシステムがExcelではなくCSVを話す場合。すべてのワークブックをExcelで開いて名前を付けて保存 → CSVをクリックする方法は2、3ファイルを超えるとスケールせず、Excelがインストールされていないサーバーでは完全に崩壊します。Total Excel Converter Xは、GUIなし、マシン上のMicrosoft Officeも不要で、コマンドラインからExcelファイルをバッチでCSVに変換します。Windowsサーバーにインストールし、スクリプトやActiveX経由で呼び出して、無人で実行できます。
*.xlsx)を指定するだけで、一致するすべてのファイルを一回の実行で処理-CSVDelimiterでカンマ、セミコロン、タブ、パイプを選択し、インポーターが期待するものに合わせる-EachSheetSeparateで各シートを独自のファイルに分割
(30日間、メール登録不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
Excelファイル(XLS、XLSX)はコンテナ形式です。ワークブックは複数のシート、数式、書式、グラフ、ピボットテーブル、条件付きルール、埋め込みオブジェクトを保持します。XLSは1990年代の独自バイナリ形式、XLSXはXMLパーツのZIPアーカイブです。両方ともOfficeスキーマを理解するパーサーを必要とします。ほとんどのデータベースと分析ツールはどちらも直接読み取れません。
CSVはプレーンテキスト — 1行に1レコード、フィールドは区切り文字で分離されています。すべてのデータベースエンジン、すべてのスクリプト言語、すべてのBIツール、すべてのETLプラットフォームはCSVを翻訳なしに読み取ります。PostgreSQLのCOPY、MySQLのLOAD DATA INFILE、BigQueryのbq load、pandasのread_csv、Rのread.csv — すべてがCSVを期待しています。Excelデータがそのパイプラインに入る必要があるとき、まずCSVになる必要があります。
| Excel (XLS / XLSX) | CSV | |
|---|---|---|
| 形式 | 独自バイナリまたはZIP-XML | プレーンテキスト |
| ファイルあたりのシート | 複数 | 1テーブル |
| 数式 | 保存され再計算される | 評価された値のみ |
| 書式 | フォント、色、罫線、グラフ | なし |
| データベースインポート | ODBCまたはライブラリが必要 | すべてのエンジンでネイティブ |
| 対象者 | Officeユーザー | データベース、スクリプト、ETLツール |
上のリンクからインストーラーをダウンロードし、Windowsサーバーまたはワークステーションで実行します。セットアップは1分以内で完了します。Microsoft ExcelやOfficeのインストールは不要です — コンバーターは独自エンジンで直接XLSとXLSXを解析します。
cmd.exeまたはPowerShellを開きます。コンバーターの実行ファイルはXLSConverter.exeで、インストールフォルダ(通常はC:\Program Files\CoolUtils\TotalExcelConverterX\)にあります。システムPATHに追加するか、コマンドでフルパスを使用してください。
最もシンプルなコマンドは、フォルダ内のすべてのExcelファイルをCSVに変換します:
XLSConverter.exe C:\Reports\*.xlsx C:\Output\ -c CSV
このコマンドはC:\Reports\内のすべての.xlsxファイルを処理し、変換後のCSVファイルをC:\Output\に保存します。各Excelファイルから同じベース名のCSVが1つ生成されます。レガシーバイナリファイルを変換するには*.xlsを、両方の拡張子を1回でキャッチするには*.xls*を使用してください。
CSVのデフォルトはターゲットシステムに合わせて調整が必要です。実際のインポーターは区切り文字とコードページにうるさいです:
XLSConverter.exe C:\Reports\*.xlsx C:\Output\ -c CSV -CSVDelimiter ";" -CSVQuotation "\"" -Encoding UTF-8 -log C:\Logs\xls2csv.log
-CSVDelimiter "," — カンマ(デフォルト)。ヨーロッパロケールには";"、タブ区切りには"\t"、パイプには"|"-CSVQuotation "\"" — 区切り文字、引用符、改行を含むフィールドを二重引用符で囲む-Encoding UTF-8 — UTF-8出力を強制。ターゲットシステムが要求するようにUTF-16、Windows-1251、Windows-1252、ISO-8859-1を使用-EachSheetSeparate — 複数シートのワークブックをシートごとに1つのCSVに分割し、{file}_{sheet}.csvと命名-log C:\Logs\xls2csv.log — 検証用の変換ログを出力コマンドを.batファイルに保存し、Windowsタスクスケジューラでスケジュールします:
@echo off "C:\Program Files\CoolUtils\TotalExcelConverterX\XLSConverter.exe" C:\Incoming\*.xlsx C:\Archive\CSV\ -c CSV -CSVDelimiter ";" -Encoding UTF-8 -EachSheetSeparate -log C:\Logs\xls2csv.log
これにより、毎晩(または設定した任意の間隔で)変換が実行され、結果を検証できるログファイルが出力されます。新しいXLSXファイルをC:\Incoming\に置けば、次のスケジュール実行で取り込まれます。
Total Excel Converter Xには完全なActiveXインターフェースが含まれています。.NET、VBScript、PHP、Python、Ruby、ASPなど、あらゆるCOM互換環境からコンバーターを呼び出せます。これにより、コマンドラインプロセスを外部起動することなく、独自のETLジョブ、Webアップロードフォーム、レポートサービスにExcel-to-CSV変換を組み込めます。
例(C#/.NET):
XLSConverterX Cnv = new XLSConverterX();
Cnv.Convert("C:\\Reports\\sales.xlsx", "C:\\Output\\sales.csv", "-c CSV -CSVDelimiter \";\" -Encoding UTF-8 -log c:\\Logs\\xls.log");
例(PHP):
$c = new COM("XLSConverter.XLSConverterX");
$c->convert("C:\\Reports\\sales.xlsx", "C:\\Output\\sales.csv", "-c CSV -CSVDelimiter \";\" -Encoding UTF-8 -log c:\\Logs\\xls.log");
同じ呼び出しがASP.NET、VBScript、Python、Ruby、Perl、JavaScript(Windows Script Host)でも動作します。アプリケーションはアップロードされたXLSXファイルを受け取り、データベースや分析ツールに直接取り込む準備ができたCSVを返すことができます。
| 機能 | オンラインコンバーター | Total Excel Converter X |
|---|---|---|
| バッチ処理 | 一度に1ファイルのみ | バッチあたりファイル数無制限 |
| ファイルのプライバシー | サードパーティサーバーにアップロード | ファイルは自分のマシンから外に出ない |
| ファイルサイズ制限 | 通常5〜25 MB | なし — ギガバイトのワークブック対応 |
| 区切り文字 / エンコーディング制御 | 稀または隠れている | フラグで完全制御 |
| 複数シートのハンドリング | 通常、最初のシートのみ | -EachSheetSeparateまたは結合 |
| 自動化 | 手動のみ | コマンドライン、.bat、タスクスケジューラ、ActiveX |
| サーバー展開 | 不可 | サーバー向け設計、GUI不要 |
| Excelのインストール必須 | 該当なし | 不要 |
| インターネット必要 | はい | いいえ |
COPY sales FROM '/data/sales.csv' CSV HEADERを実行するか、MySQLでLOAD DATA INFILEを実行します。GUIインポーターでは数分かかるファイルが、パイプライン全体で数秒で実行されます。bq loadまたはCOPY INTOを介してCSVをネイティブに取り込みます。夜間の.batジョブが当日のExcelレポートをCSVに変換し、ウェアハウスが取り込むためのステージングバケットにアップロードします。read_csvとRのread.csvで作業します。財務や運用からソースデータがXLSXとして届くと、サーバー側のコンバーターが誰もExcelに触れずにクリーンなCSVを生成します。-CSVDelimiterと-Encodingを機関の仕様に合わせて設定し、内部のExcelレポートを準拠したCSVに変換します。コンバーターはXLSとXLSXファイルを直接解析します。サーバーにMicrosoft Office、LibreOffice、その他のスプレッドシートアプリケーションをインストールする必要はありません。これによりライセンスコストを回避し、無人シナリオでのExcel自動化のよく知られた不安定さを回避できます。
Total Excel Converter Xは無人運用向けに設計されています。GUIウィンドウ、ダイアログボックス、確認プロンプトはありません。コマンドラインから、またはサービスの一部としてサイレントに実行されます — 本番サーバーに必要なものそのものです。
実際のCSVインポーターは詳細を気にします。ヨーロッパシステム向けのセミコロン区切り、国際テキスト向けのUTF-8、埋め込みカンマを含むフィールド向けの二重引用符ラップ。12の月次シートを持つExcelワークブックは1つのファイルですが、CSVはファイルあたり1つのテーブルを保持します — -EachSheetSeparateはワークブックを12の名前付きCSVファイルに分割し、それぞれが個別の取り込みの準備ができています。あらゆる詳細がコマンドラインフラグとして公開されているため、出力は初回試行で下流のパイプラインが期待するものに一致します。
同じコマンドラインツールでExcelをPDF、DOC、HTML、XML、JSON、ODS、TIFF、JPEGなどに変換できます。1回のインストールですべてのExcel変換ターゲットに対応します。-c CSVを-c PDFに変更するだけで、同じバッチ機能と自動化機能でPDFレポートが得られます。
(30日間、メールやクレジットカード不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"当社のパイプラインは、地域の店長から1日に200以上のXLSXファイルを取り込み、COPY経由でPostgresにロードします。脆弱なPython-plus-openpyxlスクリプトを.batジョブのXLSConverter.exeに置き換えました。セミコロン区切りとUTF-8フラグは、初回実行でドイツ語とポーランド語の文字問題を解決しました。スループットは同じ夜間バッチで40分から5分未満に短縮されました。"
Priya Raghavan Data Engineer, Retail Analytics
"経営ダッシュボード向けに月次のExcelワークブックをBigQueryに供給しています。-EachSheetSeparateフラグが欠けていたピースでした — シートごとに1つのCSVが、ビジネスラインごとに1つのステージングテーブルにきれいにマッピングされます。Excelからの手動シートごとのエクスポートはもう不要です。COMインターフェースは、社内アップロードポータルでも同じツールが機能します。"
Daniel Kowalski BI Analyst, Insurance Group
"ブローカーレポートを処理する.NETサービスにXLSConverterをActiveXクラス経由で統合しました。シート間参照を持つより大きなワークブックでも数式評価は正しく動作します。エンコーディングフラグはイタリア語とフランス語の入力をクリーンに処理します。あまり一般的でないフラグに関するドキュメントはより詳細にしてほしいですが、サポートは1営業日以内に質問に答えてくれました。"
Sofia Marchetti ETL Developer, FinTech Platform
XLSConverter.exe C:\Reports\*.xlsx C:\Output\ -c CSV です。ソースフォルダ内のすべてのXLSXファイルをCSVに変換します。-CSVDelimiter ";"、-Encoding UTF-8、-EachSheetSeparateなどのフラグを追加して出力を制御できます。-CSVDelimiterフラグを使用してください。カンマ(デフォルト)には","、セミコロン(ヨーロッパロケールで一般的)には";"、タブには"\t"、パイプには"|"を渡します。コマンドラインでは値を二重引用符で囲んでください。-Encoding UTF-8を追加してください。サポートされる他のコードページにはUTF-16、Windows-1251、Windows-1252、ISO-8859-1などが含まれます。データベースやインポーターが期待するものにエンコーディングを設定すれば、非ASCII文字はそのまま生き残ります。-EachSheetSeparateを追加すると、コンバーターはシートごとに1つのCSVを生成し、{file}_{sheet}.csvと命名します。各シートを異なるデータベーステーブルにロードする場合はこのモードを使用してください。
string src = @"C:\test\Source.xlsx";
string dest = @"C:\test\Dest.pdf";
var cnv = new ExcelConverterX();
cnv.Convert(src, dest, "-cPDF -log c:\\test\\Excel.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\ExcelConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.xlsx";
var outPath = Path.GetTempFileName() + ".pdf";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"{srcPath} {outPath}";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
int sleepCounter = 10;
while(!File.Exists(outPath) && sleepCounter > 0)
{
System.Threading.Thread.Sleep(1000);
sbLogs.AppendLine("sleep...");
sleepCounter--;
}
if (File.Exists(outPath))
sbLogs.AppendLine("Conversion complete successfully.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("ExcelConverter.ExcelConverterX")
C.Convert "c:\test\source.xlsx", "c:\test\dest.pdf", "-cPDF -log c:\test\Excel.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("ExcelConverter.ExcelConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.pdf"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.xlsx", "C:\www\ASP", "-cpdf -log c:\html.log")
set C = nothing
$src="C:\\test\\test.xlsx";
$dest="C:\\test\\test.csv";
if (file_exists($dest)) unlink($dest);
$c= new COM("ExcelConverter.ExcelConverterX");
$c->convert($src,$dest, "-c csv -log c:\\test\\xls.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('ExcelConverter.ExcelConverterX')
src = "C:\\test\\test.xlsx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-c PDF -log c:\\test\\Excel.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("ExcelConverter.ExcelConverterX")
src = "C:\\test\\test.xlsx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-c PDF -log c:\\test\\Excel.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('ExcelConverter.ExcelConverterX');
c.Convert('c:\test\source.xlsx', 'c:\test\dest.pdf', '-cPDF -log c:\test\Excel.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("ExcelConverter.ExcelConverterX");
c.Convert("C:\\test\\source.xlsx", "C:\\test\\dest.pdf", "-c PDF");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.xlsx"; my $dest = "C:\\test\\test.csv"; my $c = CreateObject Win32::OLE 'ExcelConverter.ExcelConverterX'; $c->convert($src, $dest, "-c csv -log c:\\test\\xls.log"); print $c->ErrorMessage if -e $dest;
無料トライアルをダウンロードして、ファイルを数分で変換。
クレジットカードもメールアドレスも不要。