<table>データで埋め尽くされたHTMLファイルやスクレイプしたウェブページのフォルダ — 財務レポート、商品カタログ、エクスポートされた分析ダッシュボード — があり、アナリストがソート、フィルタ、合計、ピボットを行えるように本物のExcelスプレッドシートとして必要な場合。各ファイルをブラウザで開いて表をExcelにコピー&ペーストすると、2ファイル目以降で数式が壊れ書式が崩れます。Total HTML Converter Xは、GUIなし、Microsoft Excelのインストールも不要で、コマンドラインからHTMLファイルをバッチでXLSに変換します。Windowsサーバーにインストールし、スクリプトやActiveX経由で呼び出して、無人で実行できます。
*.html)を指定するだけで、一致するすべてのファイルを一回の実行で処理<table>、<tr>、<td>、<th>、colspan/rowspan、セル内容に影響するインラインスタイルを認識
(30日間、メール登録不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
HTMLは表形式のデータを表示しますが、スプレッドシートとして格納するわけではありません。ブラウザで表示される<table>は読み取り専用のマークアップであり — 列をソートしたり、行をフィルタしたり、SUM数式を書いたり、ピボットを構築したりすることはできません。数値はセル内のテキストであり、アナリストが計算に使える数値型ではありません。
XLSは同じデータを動作するスプレッドシートに変えるMicrosoft Excel形式です。各セルは型付きの値 — 数値、日付、文字列 — を保持し、数式、ソート、フィルタ、条件付き書式、ピボットテーブルをサポートします。HTMLページに閉じ込められたデータを分析ワークフローに取り込む必要があるとき、まずXLSに変換しなければなりません。
| HTML | XLS | |
|---|---|---|
| データ型 | <td>タグ内のテキスト | 型付きセル値(数値、日付、文字列) |
| ソート・フィルタ | 非対応 | Excelに標準搭載 |
| 数式 | なし | SUM、AVERAGE、VLOOKUP、ピボットテーブル |
| 対象者 | ウェブ訪問者 | アナリスト、会計士、財務チーム |
| ワークフロー | ウェブ表示 | レポート作成、モデリング、BIインポート |
上のリンクからインストーラーをダウンロードし、Windowsサーバーまたはワークステーションで実行します。セットアップは1分以内で完了します。ブラウザやMicrosoft Excelのインストールは不要です — コンバーターはHTMLを解析し、独自エンジンでXLSを直接書き出します。HTMLテーブル、colspan/rowspan、埋め込みCSSスタイルにフルサポート対応しています。
cmd.exeまたはPowerShellを開きます。コンバーターの実行ファイルはHTMLConverter.exeで、インストールフォルダ(通常はC:\Program Files\CoolUtils\TotalHTMLConverterX\)にあります。システムPATHに追加するか、コマンドでフルパスを使用してください。
最もシンプルなコマンドは、フォルダ内のすべてのHTMLファイルをXLSに変換します:
HTMLConverter.exe C:\Pages\*.html C:\Output\ -c XLS
このコマンドはC:\Pages\内のすべての.htmlファイルを処理し、変換後のXLSファイルをC:\Output\に保存します。各HTMLファイルから同じベース名のXLSが1つ生成されます。ソースのテーブルはセル範囲として収まり、数値文字列はアナリストが計算に使える数値型になります。
追加のフラグでXLS出力を制御します:
HTMLConverter.exe C:\Pages\*.html C:\Output\ -c XLS -CodePage 65001 -Sheet ReportData -log C:\Logs\html2xls.log
-CodePage 65001 — エンコーディングを設定(65001 = UTF-8、1252 = 西ヨーロッパ、1251 = キリル、932 = Shift-JIS)-Sheet ReportData — XLS内のワークシート名を指定-FirstRowAsHeader 1 — 各テーブルの最初の行をXLSのヘッダー行としてマーク-log C:\Logs\html2xls.log — 検証用の変換ログを出力コマンドを.batファイルに保存し、Windowsタスクスケジューラでスケジュールします:
@echo off "C:\Program Files\CoolUtils\TotalHTMLConverterX\HTMLConverter.exe" C:\Incoming\*.html C:\Archive\XLS\ -c XLS -CodePage 65001 -Sheet Data -log C:\Logs\html2xls.log
これにより、毎晩(または設定した任意の間隔で)変換が実行され、結果を検証できるログファイルが出力されます。C:\Incoming\に新しいHTMLレポートのバッチを置けば、翌朝C:\Archive\XLS\からXLSファイルを取り出せます。
Total HTML Converter Xには完全なActiveXインターフェースが含まれています。.NET、VBScript、PHP、Python、Ruby、ASPなど、あらゆるCOM互換環境からコンバーターを呼び出せます。これにより、コマンドラインプロセスを外部起動することなく、独自のウェブアプリケーション、イントラネットポータル、またはレポートサービスにHTML-to-XLS変換を組み込めます。
例(C#/.NET):
HTMLConverterX Cnv = new HTMLConverterX();
Cnv.Convert("C:\\Pages\\report.html", "C:\\Output\\report.xls", "-c XLS -CodePage 65001 -log c:\\Logs\\html.log");
例(PHP):
$c = new COM("HTMLConverter.HTMLConverterX");
$c->convert("C:\\Pages\\report.html", "C:\\Output\\report.xls", "-c XLS -CodePage 65001 -log c:\\Logs\\html.log");
同じ呼び出しがASP.NET、VBScript、Python、Ruby、Perl、JavaScript(Windows Script Host)でも動作します。ウェブアプリケーションでアップロードされたHTMLページやURLを受け取り、リアルタイムで動作するXLSスプレッドシートをユーザーに返すことができます。
| 機能 | オンラインコンバーター | Total HTML Converter X |
|---|---|---|
| バッチ処理 | 一度に1ファイルのみ | バッチあたりファイル数無制限 |
| ファイルのプライバシー | サードパーティサーバーにアップロード | ファイルは自分のマシンから外に出ない |
| テーブル解析 | 基本的、結合セルが壊れることが多い | <table>を完全サポート、colspan/rowspanを保持 |
| 数値 | テキスト文字列として保存されることが多い | 数値セルとして収まり、数式が動作 |
| エンコーディング制御 | 自動推測 | 明示的な-CodePageフラグ、推測なし |
| 自動化 | 手動のみ | コマンドライン、.bat、タスクスケジューラ、ActiveX |
| サーバー展開 | 不可 | サーバー向け設計、GUI不要 |
| Excelのインストール必須 | 該当なし | 不要 |
| インターネット必要 | はい | いいえ |
コンバーターは有効なXLSファイルを直接書き出します。サーバーにMicrosoft Office、LibreOffice、その他のスプレッドシートアプリケーションをインストールする必要はありません。これによりライセンスコストを回避し、無人シナリオでのExcel自動化のよく知られた不安定さを回避できます — 孤立したEXCEL.EXEプロセス、DCOMアイデンティティの問題、ランダムなハングはありません。
Total HTML Converter Xは無人運用向けに設計されています。GUIウィンドウ、ダイアログボックス、確認プロンプトはありません。コマンドラインから、またはサービスの一部としてサイレントに実行されます — 本番サーバーに必要なものそのものです。Windowsスケジュールタスクの下、またはCIパイプラインの一部として実行するのも簡単です。
XLS出力には型付きセル値が含まれており、A列に詰め込まれた一面のテキストではありません。数値は数値、日付は日付、文字列は文字列です。Excelのソート、フィルタ、数式は後処理なしで結果に対して動作します。ソースHTMLのヘッダー行と結合セルはスプレッドシートに引き継がれます。
同じコマンドラインツールでHTMLをPDF、DOC、TIFF、JPEG、RTF、TXTなどに変換できます。1回のインストールですべてのHTML変換ニーズに対応します。-c XLSを-c PDFに変更するだけで、同じバッチ機能と自動化機能でPDF出力が得られます — 財務がXLSを欲しい一方で、法務が同じソースの署名済みPDFを欲しい場合に役立ちます。
(30日間、メールやクレジットカード不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"毎晩、12の公開カタログサイトから競合他社の価格を取得しています。ページはHTMLテーブルですが、当社の価格モデルはExcelに存在しています。Total HTML Converter Xは、スクレイピングしたページを1つの.batジョブでXLSファイルに変換し、数値セルが正しい形式で出力されるため、VLOOKUPがすぐに動作します。-CodePageフラグは、以前のツールが文字化けを起こしていたアクセント付き商品名を修正してくれました。"
Priya Ramanathan Senior Data Analyst, Retail Analytics
"当社のSaaSは顧客向けにHTMLレポートをエクスポートしますが、エンタープライズ顧客は常にXLSを求めてきます。ActiveXインターフェースをPHPバックエンドに組み込んだことで、同じHTMLレポートをオンデマンドで動作するスプレッドシートとして提供できます。COM呼び出しはソート可能な列を持つ本物のXLSを返し、A列にテキストを詰め込んだものではありません。同じ週にサーバースタックからExcel自動化を捨てました。"
Tobias Kleinmann Backend Developer, Reporting Platform
"数千ページにわたって予算データをHTMLテーブルとして表示していたレガシーイントラネットを移行しました。XLSへの一括変換は週末に1台のWindows Server 2019で実行され、Officeライセンスは不要、財務は結果のスプレッドシートを新しいシステムに直接インポートしました。一部のあまり知られていないフラグに関するドキュメントはもう少し充実してほしいですが、エンコーディングについて質問したときサポートは1日以内に返答してくれました。"
Rosa Fernandez IT Manager, Municipal Government
HTMLConverter.exe C:\Pages\*.html C:\Output\ -c XLS です。ソースフォルダ内のすべてのHTMLファイルをXLSに変換します。-CodePage 65001、-Sheet ReportData、-logなどのフラグを追加して出力を制御できます。<table>、<tr>、<td>、<th>要素はXLSの行と列にマッピングされます。colspanとrowspanは結合セルとして保持されます。数値文字列はSUM、AVERAGE、ピボットテーブルで動作する数値型になります。-CodePageフラグを使用してください。-CodePage 65001はUTF-8、1252は西ヨーロッパ、1251はキリル、932はShift-JISです。ソースHTMLで宣言されているエンコーディングに合わせて設定すれば、セル内容は文字化けなくXLSに収まります。HTMLConverter.HTMLConverterX)として登録されます。.NET、PHP、Python、VBScript、ASP、Ruby、Perl、その他のCOM互換環境から呼び出して、独自のWebアプリ内でオンデマンドにHTMLをXLSに変換できます。-Sheet YourSheetNameを渡すと、結果のワークブックはデフォルトの代わりにその名前をワークシートに使用します。XLSが特定のシート名を探す下流システムに送られる場合に便利です。
string src = @"C:\test\Source.html";
string dest = @"C:\test\Dest.pdf";
var cnv = new HTMLConverterX();
cnv.Convert(src, dest, "-cPDF -log c:\\test\\HTML.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\HTMLConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.html";
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}\" -cPDF";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
sbLogs.AppendLine("Conversion complete.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("HTMLConverter.HTMLConverterX")
C.Convert "c:\source.html", "c:\dest.jpg", "-cJPG -log c:\html.log"
C.Convert "https://www.coolutils.com/", "c:\URL Page.pdf", "-cPDF -log c:\html.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("HTMLConverter.HTMLConverterX")
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.html", "C:\www\ASP", "-cpdf -log c:\html.log")
set C = nothing
$src="C:\\test\\test.html";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("HTMLConverter.HTMLConverterX");
$c->convert($src,$dest, "-cPDF -log c:\\HTML.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('HTMLConverter.HTMLConverterX')
src = "C:\\test\\test.html"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\HTML.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("HTMLConverter.HTMLConverterX")
src = "C:\\test\\test.html"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\HTML.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('HTMLConverter.HTMLConverterX');
c.Convert('c:\test\source.html', 'c:\test\dest.pdf', '-cPDF -log c:\test\HTML.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("HTMLConverter.HTMLConverterX");
c.Convert("C:\\test\\source.html", "C:\\test\\dest.pdf", "-cPDF");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.html"; my $dest = "C:\\test\\test.pdf"; my $c = CreateObject Win32::OLE 'HTMLConverter.HTMLConverterX'; $c->convert($src, $dest, "-cPDF -log c:\\test\\HTML.log"); print $c->ErrorMessage if -e $dest;
無料トライアルをダウンロードして、ファイルを数分で変換。
クレジットカードもメールアドレスも不要。