Microsoft Access 안에 있어야 하는 Excel 워크북이 가득 들어 있는 폴더가 있습니다 — SQL 쿼리, 테이블 간 조인, 색인 또는 보고 데이터베이스에 공급하기 위해. 각 XLSX를 Access에서 열고 가져오기 마법사를 통해 진행하는 것은 두세 개 이상의 파일에는 확장되지 않습니다. Total Excel Converter X는 GUI 없이, Microsoft Office 설치 없이 명령줄에서 XLS 및 XLSX 파일을 DBF(Access가 기본적으로 가져오는 dBase IV 형식)로 일괄 변환합니다. Windows 서버에 설치하고 스크립트나 ActiveX를 통해 호출하면 무인으로 실행됩니다.
*.xlsx)를 전달하면 변환기가 한 번의 실행으로 일치하는 모든 파일을 처리합니다
(30일, 이메일 불필요)
(서버 라이선스, 영구)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
Excel은 스프레드시트입니다. 각 워크시트는 평면 그리드입니다 — 행과 열이 있고 그 위에 수식과 서식이 추가됩니다. Excel은 시트당 최대 1,048,576행을 처리하지만 기본 조인, 파일 간 색인 조회, 공유 트랜잭션 모델이 없습니다. 같은 XLSX를 편집하는 두 분석가는 두 개의 분기된 사본을 생성합니다. 30개의 워크북에 걸쳐 있는 데이터에 대한 보고는 열이 이동하는 순간 깨지는 VLOOKUP 체인을 작성하는 것을 의미합니다.
Access(및 FoxPro, OpenOffice Base, 대부분의 BI 도구를 포함하여 DBF를 사용하는 모든 데이터베이스)는 관계형 데이터를 위해 만들어졌습니다. 테이블에는 형식이 지정된 필드, 기본 키, 인덱스가 있습니다. 쿼리는 SQL을 사용합니다: 조인, 집계, 필터, 하위 쿼리. Access 데이터베이스 하나는 여러 연결된 테이블에 걸쳐 수천만 행을 보유하고 양식과 보고서를 통해 제공할 수 있습니다. Excel 데이터가 그러한 분석을 주도해야 할 때, 먼저 데이터베이스 테이블에 들어가야 합니다 — 그리고 DBF는 Access가 변환 마찰 없이 가져오는 형식입니다.
| Excel | Access / DBF | |
|---|---|---|
| 구조 | 시트당 평면 그리드 | 형식이 지정된 필드, 인덱스, 관계 |
| 쿼리 | 수식, VLOOKUP | 조인 및 집계가 있는 SQL |
| 규모 | 시트당 1M 행, 100K 이상에서 느림 | 테이블당 수천만 행 |
| 동시성 | 한 번에 한 명의 편집자 | 행 잠금이 있는 다중 사용자 |
| 워크플로 | 임시 분석 | 보고, ETL, BI 파이프라인 |
위의 링크에서 설치 프로그램을 다운로드하고 Windows 서버 또는 워크스테이션에서 실행합니다. 설치는 1분 이내에 완료됩니다. Microsoft Office 설치는 필요하지 않습니다 — 변환기는 자체 엔진을 사용하여 수식, 날짜, 숫자 정밀도, 유니코드 문자열을 포함한 XLS와 XLSX를 직접 분석합니다.
cmd.exe 또는 PowerShell을 엽니다. 변환기 실행 파일은 설치 폴더(일반적으로 C:\Program Files\CoolUtils\TotalExcelConverterX\)에 있는 XLSConverter.exe입니다. 시스템 PATH에 추가하거나 명령에서 전체 경로를 사용하십시오.
가장 간단한 명령은 폴더의 모든 Excel 파일을 DBF로 변환합니다:
XLSConverter.exe C:\Books\*.xlsx C:\Output\ -c DBF
이 명령은 C:\Books\의 모든 .xlsx 파일을 처리하고 결과 DBF 테이블을 C:\Output\에 저장합니다. 각 워크북은 같은 기본 이름으로 하나의 DBF를 생성하며, 외부 데이터 → dBase 파일을 통해 Access로 끌어다 놓을 준비가 되었습니다.
추가 플래그로 열이 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 파일은 ODBC를 통해 Access에 연결되거나 기본 테이블로 가져와지며, 보고 파이프라인의 나머지 부분은 스프레드시트의 엉킨 모음 대신 실제 데이터베이스에서 실행됩니다.
Total Excel Converter X에는 완전한 ActiveX 인터페이스가 포함되어 있습니다. .NET, VBScript, PHP, Python, Ruby, ASP 등 모든 COM 호환 환경에서 변환기를 호출할 수 있습니다. 이를 통해 명령줄 프로세스를 별도로 실행하지 않고도 자체 ETL 서비스, 인트라넷 포털 또는 데이터 수집 애플리케이션에 Excel-to-DBF 변환을 내장할 수 있습니다.
예제 (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 |
|---|---|---|
| 일괄 처리 | 한 번에 한 파일 | 배치당 무제한 파일 |
| 파일 프라이버시 | 워크북이 제3자 서버에 업로드됨 | 파일이 사용자 컴퓨터를 떠나지 않음 |
| 필드 유형 감지 | 모든 것이 Character가 됨 | Numeric, Date, Logical, Character가 추론됨 |
| 시트 선택 | 첫 번째 시트만 | 이름 또는 인덱스로 모든 시트 |
| 행 제한 | 종종 10K-50K 행으로 제한됨 | 인위적인 제한 없음 |
| 자동화 | 수동 전용 | 명령줄, .bat, 작업 스케줄러, ActiveX |
| 서버 배포 | 불가능 | 서버용 설계, GUI 불필요 |
| Excel 설치 필요 | 해당 없음 | 아니오 |
변환기는 Microsoft Excel, LibreOffice 또는 스프레드시트 애플리케이션이 설치되어 있지 않아도 XLS와 XLSX를 직접 읽고 DBF 테이블을 작성합니다. 이를 통해 서버당 Office 라이선스 비용과 무인 시나리오에서 Excel 자동화의 잘 알려진 불안정성을 피할 수 있습니다.
숫자는 숫자로 유지되고, 날짜는 Date 필드로 유지되며, true/false 플래그는 Logical이 되고, 텍스트는 적절한 너비의 Character가 됩니다. Access는 결과를 즉시 색인화, 조인, 쿼리할 수 있는 적절히 형식화된 테이블로 가져옵니다 — 가져오기 후 변환 단계가 없습니다.
Total Excel Converter X는 무인 사용을 위해 설계되었습니다. GUI 창, 대화 상자, 확인 프롬프트가 없습니다. 명령줄 또는 서비스의 일부로 조용히 실행됩니다 — ETL 호스트나 데이터 수집 서버에 필요한 바로 그 방식입니다.
같은 명령줄 도구로 Excel을 CSV, JSON, XML, SQL, PDF, HTML, ODS 등으로 변환할 수 있습니다. 하나의 설치로 전체 Excel-to-database 및 Excel-to-document 파이프라인을 다룹니다. -c DBF를 -c SQL로 변경하면 동일한 일괄 처리 및 자동화 기능으로 MySQL, PostgreSQL 또는 SQL Server에 로드할 준비가 된 INSERT 문 스크립트를 얻을 수 있습니다.
(30일, 이메일이나 신용카드 불필요)
(서버 라이선스, 영구)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"우리 진료소는 매주 활용 데이터를 XLSX로 제출합니다. 가져오기 마법사를 통해 Access로 로드하는 데 매주 월요일 두 시간이 걸렸습니다. 이제 SMB 공유에서 예약된 .bat을 통해 XLSConverter.exe를 실행하고 연결된 DBF 테이블이 자동으로 새로 고침됩니다. Access 마법사가 망가뜨리던 날짜 열을 포함하여 필드 유형이 올바르게 전달됩니다. 매주 두 시간 절약, 수동 작업 0회."
Linnea Ostberg Database Administrator, Regional Health Network
"추세 분석을 위해 15년간의 발송 스프레드시트를 단일 Access 데이터베이스로 마이그레이션해야 했습니다. Total Excel Converter X는 한 배치로 전체 아카이브를 처리했습니다 — 약 4,200개의 워크북 — 긴 주말 동안. 로그 파일은 잘못된 헤더 행이 있는 소수의 파일을 표시했고, 나머지는 적절한 Numeric 및 Date 필드와 함께 Access에 도달했습니다. 수동 가져오기나 다른 사람이 유지 관리할 수 없는 일회성 Python 스크립트의 대안보다 낫습니다."
Daniel Petrescu Reporting Analyst, Logistics Co.
"수집 서비스의 COM 인터페이스를 통해 XLSConverter를 임베드합니다. 고객은 포털을 통해 Excel 요금표를 업로드합니다. 서비스는 이를 DBF로 변환하고 결과를 SQL Server로 승격하기 전에 검증을 위해 스테이징 Access 데이터베이스에 연결합니다. ActiveX 호출은 빠르고 예측 가능합니다. 시트 선택과 FirstRowHeader는 거의 모든 고객 템플릿을 다룹니다. 몇 가지 엣지 케이스는 우리 측에서 사전 처리가 필요했지만, 우리가 물어볼 때 지원팀은 응답이 빨랐습니다."
Aiyana Holloway ETL Developer, Insurance SaaS
XLSConverter.exe C:\Books\*.xlsx C:\Output\ -c DBF입니다. 이 명령은 소스 폴더의 모든 Excel 워크북을 DBF 테이블로 변환하며, Access는 외부 데이터 → dBase 파일을 통해 기본적으로 가져옵니다. 1행을 필드 이름으로 사용하려면 -FirstRowHeader 1을, 특정 워크시트를 선택하려면 -Sheet을 추가하세요.-FirstRowHeader 1을 사용하면 첫 번째 행이 유효한 DBF 식별자(최대 10자, 공백 없음)로 정리된 필드 이름을 제공합니다.-Sheet SheetName을 사용하거나 워크시트당 하나의 DBF를 생성하기 위해 시트당 한 번씩 변환기를 실행하세요. 그런 다음 각 DBF를 Access의 별도 테이블로 가져와서 이전에 단일 워크북에 있던 시트 간 조인을 수행할 수 있습니다.
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;
무료 평가판을 다운로드하고 몇 분 만에 파일을 변환하세요.
신용카드나 이메일이 필요하지 않습니다.