У вас есть папки с книгами Excel, которые должны жить внутри Microsoft Access — для SQL-запросов, объединений между таблицами, индексирования или питания базы данных отчётности. Открывать каждый XLSX в Access и проходить мастер импорта не масштабируется дальше двух-трёх файлов. Total Excel Converter X конвертирует XLS- и XLSX-файлы в DBF (формат dBase IV, который Access импортирует нативно) из командной строки, пакетно, без графического интерфейса и без установки Microsoft Office. Установите его на сервер Windows, вызывайте из скрипта или через ActiveX, и он будет работать автоматически.
*.xlsx), и конвертер обработает все подходящие файлы за один запуск
(30 дней, без email)
(серверная лицензия, бессрочная)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
Excel — это таблица. Каждый рабочий лист — плоская сетка: строки и столбцы с формулами и форматированием поверх. Excel обрабатывает до 1 048 576 строк на лист, но в нём нет нативных объединений, нет индексированных поисков между файлами и нет общей транзакционной модели. Два аналитика, редактирующие один и тот же XLSX, выдают две расходящиеся копии. Отчётность по данным, лежащим в тридцати книгах, означает написание цепочек VLOOKUP, которые ломаются в момент, когда смещается столбец.
Access (и любая база данных, потребляющая DBF, включая FoxPro, OpenOffice Base и большинство BI-инструментов) создан для реляционных данных. У таблиц есть типизированные поля, первичные ключи и индексы. Запросы используют SQL: объединения, агрегации, фильтры, подзапросы. Одна база данных Access может содержать десятки миллионов строк в нескольких связанных таблицах и обслуживать их через формы и отчёты. Когда данные Excel должны управлять таким анализом, они должны попасть в таблицу базы данных — а DBF — формат, который Access импортирует без трения конвертации.
| Excel | Access / DBF | |
|---|---|---|
| Структура | Плоская сетка на лист | Типизированные поля, индексы, отношения |
| Запросы | Формулы, VLOOKUP | SQL с объединениями и агрегациями |
| Масштаб | 1 млн строк на лист, медленно после 100K | Десятки миллионов строк на таблицу |
| Параллельная работа | Один редактор за раз | Многопользовательский с блокировкой строк |
| Применение | Ad-hoc анализ | Отчётность, ETL, BI-пайплайны |
Скачайте установщик по ссылке выше и запустите его на вашем сервере или рабочей станции Windows. Установка занимает меньше минуты. Установка Microsoft Office не требуется — конвертер разбирает XLS и XLSX напрямую с помощью собственного движка, включая формулы, даты, числовую точность и Unicode-строки.
Откройте cmd.exe или PowerShell. Исполняемый файл конвертера — XLSConverter.exe, расположенный в папке установки (обычно C:\Program Files\CoolUtils\TotalExcelConverterX\). Добавьте его в системную переменную PATH или используйте полный путь в командах.
Простейшая команда конвертирует все Excel-файлы в папке в DBF:
XLSConverter.exe C:\Books\*.xlsx C:\Output\ -c DBF
Эта команда обрабатывает каждый файл .xlsx в папке C:\Books\ и сохраняет полученные DBF-таблицы в C:\Output\. Каждая книга создаёт один DBF с тем же базовым именем, готовый к перетаскиванию в Access через Внешние данные → Файл dBase.
Управляйте тем, как столбцы становятся полями DBF, с помощью дополнительных флагов:
XLSConverter.exe C:\Books\*.xlsx C:\Output\ -c DBF -Sheet Sheet1 -FirstRowHeader 1 -log C:\Logs\xls2dbf.log
-Sheet Sheet1 — выбрать конкретный рабочий лист по имени (или используйте индекс)-FirstRowHeader 1 — обрабатывать строку 1 как имена полей; конвертер очищает их в валидные идентификаторы DBF-Range A1:G500 — ограничить конвертацию конкретным диапазоном ячеек-log C:\Logs\xls2dbf.log — записать лог конвертации со списком каждого входного файла, выходного файла, числа строк и любыми предупреждениями об усечении полейСохраните команду в файле .bat и запланируйте его через Планировщик задач Windows:
@echo off "C:\Program Files\CoolUtils\TotalExcelConverterX\XLSConverter.exe" C:\Incoming\*.xlsx C:\Archive\DBF\ -c DBF -FirstRowHeader 1 -log C:\Logs\xls2dbf.log
Запускайте её каждую ночь или после того, как финансовая команда сбрасывает свою ежедневную книгу во входящую папку. Затем DBF-файлы связываются с Access через ODBC или импортируются как нативные таблицы, и остальная часть пайплайна отчётности работает с настоящей базой данных, а не с клубком таблиц.
Total Excel Converter X включает полный интерфейс ActiveX. Вы можете вызывать конвертер из любой COM-совместимой среды — .NET, VBScript, PHP, Python, Ruby или ASP. Это позволяет встроить конвертацию Excel в DBF в ваш ETL-сервис, интранет-портал или приложение для приёма данных без запуска командной строки.
Пример (C#/.NET):
XLSConverterX Cnv = new XLSConverterX();
Cnv.Convert("C:\\Books\\sales.xlsx", "C:\\Output\\sales.dbf", "-c DBF -FirstRowHeader 1 -log c:\\Logs\\xls.log");
Пример (PHP):
$c = new COM("XLSConverter.XLSConverterX");
$c->convert("C:\\Books\\sales.xlsx", "C:\\Output\\sales.dbf", "-c DBF -FirstRowHeader 1 -log c:\\Logs\\xls.log");
Тот же вызов работает из ASP.NET, VBScript, Python, Ruby, Perl и JavaScript (Windows Script Host). Ваше приложение может принимать загруженные XLSX-файлы из веб-формы, конвертировать их в DBF и связать результат с Access или загрузить прямо в промежуточную таблицу SQL Server.
| Функция | Онлайн-конвертеры | Total Excel Converter X |
|---|---|---|
| Пакетная обработка | По одному файлу за раз | Неограниченное количество файлов за раз |
| Конфиденциальность файлов | Книги загружаются на сторонний сервер | Файлы не покидают ваш компьютер |
| Определение типов полей | Всё становится Character | Numeric, Date, Logical, Character выводятся |
| Выбор листа | Только первый лист | Любой лист по имени или индексу |
| Лимит строк | Часто ограничен 10K-50K строк | Без искусственного лимита |
| Автоматизация | Только вручную | Командная строка, .bat, Планировщик задач, ActiveX |
| Серверное развёртывание | Невозможно | Разработан для серверов, GUI не требуется |
| Требуется установленный Excel | Не применимо | Нет |
Конвертер читает XLS и XLSX напрямую и пишет DBF-таблицы без установленных Microsoft Excel, LibreOffice или какого-либо табличного приложения. Это позволяет избежать пер-серверного лицензирования Office и хорошо известной нестабильности автоматизации Excel в автоматических сценариях.
Числа остаются числовыми, даты остаются полями Date, флаги true/false становятся Logical, текст становится Character с подходящей шириной. Access импортирует результат как корректно типизированную таблицу, которую вы можете индексировать, объединять и запрашивать сразу — без шага конвертации после импорта.
Total Excel Converter X разработан для автоматической работы. Никаких окон GUI, диалоговых окон, запросов подтверждения. Он работает тихо из командной строки или как часть сервиса — именно то, что нужно ETL-хосту или серверу приёма данных.
Тот же инструмент командной строки конвертирует Excel в CSV, JSON, XML, SQL, PDF, HTML, ODS и другие форматы. Одна установка покрывает весь ваш Excel-в-БД и Excel-в-документ пайплайн. Замените -c DBF на -c SQL, и вы получите скрипт INSERT-выражений, готовый к загрузке в MySQL, PostgreSQL или SQL Server, с теми же функциями пакетной обработки и автоматизации.
(30 дней, без email и кредитной карты)
(серверная лицензия, бессрочная)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"Наши клиники присылают еженедельные данные по использованию в XLSX. Загрузка их в Access через мастер импорта съедала два часа каждый понедельник. Теперь мы запускаем XLSConverter.exe из запланированного .bat по SMB-шаре, и связанные DBF-таблицы обновляются автоматически. Типы полей приходят корректно, включая столбцы с датами, которые мастер Access раньше калечил. Два часа в неделю обратно и ноль ручных касаний."
Linnea Ostberg Database Administrator, Regional Health Network
"Нам нужно было перенести пятнадцать лет диспетчерских таблиц в одну базу данных Access для анализа трендов. Total Excel Converter X обработал весь архив одним пакетом — около 4 200 книг — за длинные выходные. Лог-файл пометил небольшое число файлов с плохими строками заголовков, а остальные легли в Access с правильными полями Numeric и Date. Лучше альтернативы в виде ручного импорта или одноразового скрипта на Python, который никто другой не сможет поддерживать."
Daniel Petrescu Reporting Analyst, Logistics Co.
"Мы встраиваем XLSConverter через COM-интерфейс в наш сервис приёма данных. Клиенты загружают тарифные карточки Excel через портал; сервис конвертирует их в DBF и связывает результат с нашей промежуточной базой Access для проверки перед продвижением в SQL Server. ActiveX-вызов быстрый и предсказуемый. Выбор листа и FirstRowHeader покрывают почти каждый шаблон клиента; пара граничных случаев потребовала предобработки на нашей стороне, но поддержка отвечала быстро, когда мы спрашивали."
Aiyana Holloway ETL Developer, Insurance SaaS
XLSConverter.exe C:\Books\*.xlsx C:\Output\ -c DBF. Она конвертирует каждую книгу Excel в исходной папке в DBF-таблицу, которую Access импортирует нативно через Внешние данные → Файл dBase. Добавьте -FirstRowHeader 1 для использования строки 1 как имён полей и -Sheet для выбора конкретного рабочего листа.-FirstRowHeader 1 первая строка предоставляет имена полей, очищенные в валидные идентификаторы DBF (макс. 10 символов, без пробелов).-Sheet SheetName, чтобы конвертировать конкретный лист, или запустите конвертер по одному разу на лист, чтобы получить один DBF на рабочий лист. Каждый DBF затем можно импортировать как отдельную таблицу в Access, что позволяет объединять листы, которые раньше жили в одной книге.
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;
Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.