SOAPウェブサービス、EDIパートナー、規制提出、ERP統合に供給する必要があるExcelワークブックのフォルダがあり — 受信側システムがXLSXではなくXMLを話す場合。各ファイルをExcelで開いて手作業でXMLとして保存する方法は2つ目のワークブックを超えるとうまくいかなくなり、Excelの組み込みXMLエクスポートは下流システムが実際にチェックするスキーマ要件を無視します。Total Excel Converter Xは、GUIなし、Microsoft Excelのインストールも不要で、コマンドラインからXLSとXLSXファイルを整形式XMLにバッチ変換します。Windowsサーバーにインストールし、スクリプトやActiveX経由で呼び出して、無人で実行できます。
*.xlsx)を指定するだけで、一致するすべてのワークブックを一回の実行で処理
(30日間、メール登録不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
Excelはグリッドです。行と列が値を保持し、各列の意味は人間が読むヘッダー行に存在します。この形式はアナリストには素晴らしいですが、システム統合にはひどいものです。SOAPサービス、EDIゲートウェイ、規制ポータル、銀行インターフェース、HL7ヘルスケアメッセージはXLSXを解析しません。明示的な要素名、定義されたネスト、予測可能なエスケープルールを持つXMLを期待します。
XMLは階層的で自己記述的です。各値は要素名を持ち、ドキュメントはスキーマに対して検証され、あらゆるプラットフォーム — Linux、Java、.NET、IBMメインフレーム — が独自ライブラリなしで解析できます。Excelデータがその世界に入る必要があるとき、まずXMLになる必要があります。Total Excel Converter Xは有効なXMLを書き出し、各Excel行がレコードノードになり、ヘッダー行がフィールド名を提供し、特殊文字がエスケープされて、出力がXMLパーサーをクリーンに通過します。
| Excel (XLS/XLSX) | XML | |
|---|---|---|
| 形状 | 2次元グリッド | 階層ツリー |
| フィールド名 | 暗黙(ヘッダー行) | すべてのレコードに明示的 |
| 検証 | ファイルレベルではなし | スキーマ(XSD、DTD) |
| コンシューマー | 人間、Excel対応ツール | SOAP、EDI、ERP、HL7、規制当局 |
| クロスプラットフォーム | Windows + Officeで最良 | 普遍的 — あらゆる言語とOS |
上のリンクからインストーラーをダウンロードし、Windowsサーバーまたはワークステーションで実行します。セットアップは1分以内で完了します。Microsoft Excelのインストールは不要です — コンバーターは独自のパーサーで直接XLSとXLSXを読み取り、数式、スタイル、複数シートのワークブックを含みます。
cmd.exeまたはPowerShellを開きます。コンバーターの実行ファイルはXLSConverter.exeで、インストールフォルダ(通常はC:\Program Files\CoolUtils\TotalExcelConverterX\)にあります。システムPATHに追加するか、コマンドでフルパスを使用してください。
最もシンプルなコマンドは、フォルダ内のすべてのExcelファイルをXMLに変換します:
XLSConverter.exe C:\Sheets\*.xlsx C:\Output\ -c XML
このコマンドはC:\Sheets\内のすべての.xlsxファイルを処理し、変換後のXMLファイルをC:\Output\に保存します。各ワークブックから同じベース名のXMLファイルが1つ生成されます。ソースの各行は<Row>要素になり、各セルは対応する列ヘッダーにちなんで命名された子要素になります。
追加のフラグでXML出力を制御します:
XLSConverter.exe C:\Sheets\*.xlsx C:\Output\ -c XML -Encoding UTF-8 -FirstRowAsHeader true -log C:\Logs\xls2xml.log
-Encoding UTF-8 — XMLエンコーディングを設定(UTF-8、UTF-16、Windows-1252、ISO-8859-1)-FirstRowAsHeader true — 行1を要素名として使用、汎用的なColumn1、Column2の代わりに-Sheet "Invoices" — すべてのシートではなく、名前付きワークシートのみを変換-log C:\Logs\xls2xml.log — 検証用の変換ログを出力コマンドを.batファイルに保存し、Windowsタスクスケジューラでスケジュールします:
@echo off "C:\Program Files\CoolUtils\TotalExcelConverterX\XLSConverter.exe" C:\Incoming\*.xlsx C:\Archive\XML\ -c XML -Encoding UTF-8 -FirstRowAsHeader true -log C:\Logs\xls2xml.log
これにより、毎晩(または設定した任意の間隔で)変換が実行され、結果を検証できるログファイルが出力されます。日中に新しいワークブックをC:\Incoming\に置けば、統合パイプラインが自動的に取り込みます。
Total Excel Converter Xには完全なActiveXインターフェースが含まれています。.NET、VBScript、PHP、Python、Ruby、ASPなど、あらゆるCOM互換環境からコンバーターを呼び出せます。これにより、コマンドラインプロセスを外部起動することなく、独自のWebアプリケーション、統合ブローカー、ドキュメントワークフローにExcel-to-XML変換を組み込めます。
例(C#/.NET):
XLSConverterX Cnv = new XLSConverterX();
Cnv.Convert("C:\\Sheets\\invoices.xlsx", "C:\\Output\\invoices.xml", "-c XML -Encoding UTF-8 -FirstRowAsHeader true -log c:\\Logs\\xls.log");
例(PHP):
$c = new COM("XLSConverter.XLSConverterX");
$c->convert("C:\\Sheets\\invoices.xlsx", "C:\\Output\\invoices.xml", "-c XML -Encoding UTF-8 -FirstRowAsHeader true -log c:\\Logs\\xls.log");
同じ呼び出しがASP.NET、VBScript、Python、Ruby、Perl、JavaScript(Windows Script Host)でも動作します。統合層はアップロードされたExcelファイルを受け取り、メモリ上でXMLに変換し、SOAPエンドポイントやERPキューにXMLペイロードを直接転送できます。
| 機能 | オンラインコンバーター | Total Excel Converter X |
|---|---|---|
| バッチ処理 | 一度に1ファイルのみ | バッチあたりファイル数無制限 |
| データのプライバシー | サードパーティサーバーにアップロード | ファイルは自分のマシンから外に出ない |
| エンコーディング制御 | UTF-8のみ、しばしば壊れる | UTF-8、UTF-16、Windows-1252、ISO-8859-1 |
| 特殊文字エスケープ | 不安定、しばしば無効なXML | &、<、>、"、制御文字の完全エスケープ |
| 複数シートのワークブック | 最初のシートのみ | すべてのシートまたは名前付きシート |
| 自動化 | 手動のみ | コマンドライン、.bat、タスクスケジューラ、ActiveX |
| サーバー展開 | 不可 | サーバー向け設計、GUI不要 |
| Excelのインストール必須 | 該当なし | 不要 |
| インターネット必要 | はい | いいえ |
コンバーターは独自のパーサーで直接XLSとXLSXを読み取ります。サーバーにMicrosoft Office、LibreOffice、その他のスプレッドシートアプリケーションをインストールする必要はありません。これによりライセンスコストを回避し、無人シナリオでのExcel自動化のよく知られた不安定さを回避できます。
Total Excel Converter Xは無人運用向けに設計されています。GUIウィンドウ、ダイアログボックス、確認プロンプトはありません。コマンドラインから、またはサービスの一部としてサイレントに実行されます — 本番統合サーバーに必要なものそのものです。
出力は整形式XMLです。アンパサンドは&に、山括弧は<と>に、属性内の引用符はエスケープされ、はぐれ制御文字は除去されます。XMLは、たまたまアンパサンドを含む顧客名で詰まることなく、標準準拠のパーサーを通過します。
同じコマンドラインツールでExcelをPDF、DOC、HTML、CSV、JSON、ODS、TXTなどに変換できます。1回のインストールですべてのスプレッドシート変換ニーズに対応します。-c XMLを-c JSONに変更するだけで、同じバッチ機能と自動化機能でJSON出力が得られます。
(30日間、メールやクレジットカード不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"当社の配送パートナーは購買注文をSOAP経由のXMLでしか受け付けてくれませんが、業務チームはExcelで作成しています。Total Excel Converter Xは統合サーバー上でスケジュール済みの.batとして動作し、日次の注文ワークブックを3秒以内にXMLへ変換します。エスケープ処理は、以前の自社製パーサーを壊していた顧客名の特殊文字も問題なく扱えます。誰もメンテナンスしたがらなかった自社のVBAスクリプトのドロップイン置き換えになりました。"
Andreas Vogt Integration Engineer, Logistik AG
"当社は約40の小売パートナーとEDIドキュメントをやり取りしており、その3分の1がX12やEDIFACTではなくXMLエンベロープを希望します。コンバーターはスプレッドシートベースの注文窓口とEDIゲートウェイの間に位置しています。ヘッダー行のマッピングにより、各パートナーのXMLスキーマが、当社で既に使用している列名と一致します。エンコーディングはコマンドラインからパートナーごとに設定。本番環境で予期せぬ事態は起きません。"
Priya Subramanian EDI Specialist, Wholesale Distribution
"当社は中央銀行に対して規制報告書を毎週XMLで提出しています。ソースデータは財務チームがExcelで照合し、その後、厳密にエンコードされたXMLペイロードに変換する必要があります。コンバーターのUTF-8出力とクリーンなアンパサンドエスケープにより、規制当局のバリデーターを一発で通過します。出力後にXSLTで後処理して厳密なターゲットスキーマに合わせていますが、変換ステップ自体は信頼性が高く高速です。"
Marc Lefevre Regulatory Reporting Lead, Banque Mutuelle
XLSConverter.exe C:\Sheets\*.xlsx C:\Output\ -c XML です。ソースフォルダ内のすべてのExcelワークブックをXMLに変換します。-Encoding UTF-8、-FirstRowAsHeader true、-logなどのフラグを追加して、出力構造とエンコーディングを制御できます。-FirstRowAsHeader trueを渡すと、コンバーターは各列ヘッダーをそのフィールドの要素名として使用するため、CustomerName列は<CustomerName>要素を生成します。このフラグなしでは、コンバーターは汎用的なColumn1、Column2タグにフォールバックします。行ノードはデフォルトで<Row>になります。これにより、ほとんどの消費スキーマにきれいにマッピングされる予測可能で規則的な構造が得られます。-Encodingフラグを介してUTF-8、UTF-16、Windows-1252、ISO-8859-1がすべてサポートされています。UTF-8はSOAP、EDI、ほとんどのモダンな統合に対する安全なデフォルトです。下流システムが特に要求する場合はUTF-16、シングルバイトXMLを期待するレガシーパートナーに供給する場合はWindowsコードページを使用してください。&に、山括弧は<と>に、属性値内の二重引用符は"に、XML 1.0パーサーを壊すはぐれ制御文字は除去されます。出力は手動クリーンアップなしに標準準拠のパーサーに対して検証されます。-Sheet "Invoices"を渡して名前付きワークシートのみを変換するか、-Sheet 1でゼロベースのインデックスで選択します。隠しシートとグラフシートはスキップされます。XLSConverter.XLSConverterX)として登録されます。.NET、PHP、Python、VBScript、ASP、Ruby、Perl、その他のCOM互換環境から呼び出して、ExcelアップロードをリアルタイムでXMLに変換し、結果をSOAPエンドポイントやメッセージキューに転送できます。
string src="C:\\test\\Source.xlsx";
string dest="C:\\test\\Dest.PDF";
ExcelConverterX Cnv = new ExcelConverterX();
Cnv.Convert(src, dest, "-c PDF -log c:\\test\\Excel.log");
MessageBox.Show("Convert complete!");
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 msgPath = $@"{assemblyDirectoryPath}\MSG\MSG-1.xlsx";
var outPath = Path.GetTempFileName() + ".pdf";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(msgPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & MSG files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"{msgPath} {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"
Rresponse.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.XLS";
$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(file_path):
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.XLS"; 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;
無料トライアルをダウンロードして、ファイルを数分で変換。
クレジットカードもメールアドレスも不要。