IRONSOFTWAREHOME
IRONXL 사용하여

.NET CLI를 통해 설치하세요(CI/CD 파이프라인에 권장).

Curtis Chau
Curtis Chau
Updated: 2026년 6월 18일

IronXL은 개발자가 Microsoft Office 없이도 간단한 C# 코드를 사용하여 .NET Core 애플리케이션에서 Excel 셀을 수정할 수 있도록 합니다. 이는 셀 조작, 범위 작업을 지원하며 Windows, Linux, macOS에서 배포할 수 있습니다.

왜 .NET Core Excel 개발에 IronXL을 사용해야 할까요?

.NET Core에서 Excel 작업은 특히 클라우드 네이티브 및 컨테이너화된 환경에서 현대 Enterprise 애플리케이션에 매우 중요합니다. IronXL 라이브러리는 광범위한 Excel 기능을 제공합니다 이는 Microsoft Office 설치 없이 플랫폼 간에 원활하게 작동합니다. 이 기능은 보고서 생성을 자동화하는 DevOps 엔지니어, 데이터 처리 파이프라인 및 CI/CD 워크플로에 특히 가치가 있습니다.

일반적인 시나리오를 고려해 보세요: 귀하의 팀은 다양한 데이터 소스에서 월간 성능 보고서를 생성하고, 계산을 기반으로 특정 셀을 수정하며, 여러 환경에 걸쳐 Docker 컨테이너에 이 기능을 배포해야 합니다. 전통적인 Excel 자동화는 각 서버에 Office 설치가 필요하여 라이선스 문제와 배포 복잡성이 발생하게 됩니다. IronXL은 .NET Core 애플리케이션이 실행되는 모든 곳에서 작동하는 단독 솔루션을 제공하여 이러한 장벽을 제거합니다.

이 라이브러리는 외부 종속성 없이 처음부터 스프레드시트를 생성하고, 프로그래밍 방식으로 워크시트를 관리하며, 파일 형식 간의 변환에 탁월합니다. 마이크로서비스, 서버리스 함수 또는 컨테이너화된 애플리케이션을 구축하든, IronXL은 현대 DevOps 워크플로에 자연스럽게 통합됩니다.

클라우드 네이티브 Excel 처리에 IronXL을 선택해야 하는 이유

클라우드 환경은 가볍고 유연한 솔루션을 요구합니다. IronXL은 Docker 배포, Azure Functions, AWS Lambda를 지원하여 이를 충족합니다. 라이브러리의 아키텍처는 자원 소비를 최소화하면서도 높은 성능을 유지하여 비용 효율적인 클라우드 운영에 필수적입니다. Interop 없이 Excel과 작업할 수 있어 배포가 더 깔끔하고 효율적입니다.

.NET Core Excel 편집을 위한 주요 기능

기능설명
크로스 플랫폼 호환성Windows, Linux, macOS에 대한 네이티브 지원
컨테이너 준비 완료Docker 및 Kubernetes 배포에 최적화됨
클라우드 네이티브 통합서버리스 플랫폼에서 원활하게 작동
외부 종속성 없음Office 요구 사항이 없는 독립형 라이브러리
성능 최적화됨대규모 작업을 위한 효율적인 메모리 사용

IronXL 라이브러리 설치 방법

.NET Core 프로젝트에서 IronXL을 시작하는 데 몇 분밖에 걸리지 않습니다. 이 라이브러리는 표준 패키지 매니저를 통해 제공되며 모든 현대 배포 시나리오를 지원합니다. 프로젝트에 IronXL을 추가하는 방법은 다음과 같습니다:

dotnet add package IronXL.Excel

Visual Studio의 패키지 관리 콘솔을 사용하십시오

PM > Install-Package IronXL.Excel

특정 버전 설치용 (재현 가능한 빌드에 유용)

dotnet add package IronXL.Excel --version 2024.12.0

.csproj 파일에 추가하여 선언적 패키지 관리를 위해

<PackageReference Include="IronXL.Excel" Version="2024.12.0" />
Text

프로덕션을 위한 라이센스 구성

설치 후, 프로덕션 배포를 위한 라이센스 키를 구성하십시오. IronXL은 단일 서버 애플리케이션부터 기업 전반에 걸친 솔루션에 적합한 유연한 라이센싱 옵션을 제공합니다. 웹 애플리케이션의 경우, 웹.config에서 라이센스를 구성하여 중앙에서 관리할 수 있습니다. 응용 프로그램을 확장하기 위한 라이센스 확장과 필요에 따른 업그레이드 옵션을 고려하십시오.

컨테이너 환경을 위한 IronXL 개선

컨테이너에 배포할 때는 Docker 설정 모범 사례와 일치하는 이러한 최적화 전략을 고려하십시오:

# Dockerfile example for IronXL applications
FROM mcr.microsoft.com/dotnet/runtime:6.0-alpine AS base
WORKDIR /app

# Install required dependencies for Excel processing
RUN apk add --no-cache \
    icu-libs \
    krb5-libs \
    libgcc \
    libintl \
    libssl1.1 \
    libstdc++ \
    zlib

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["YourProject.csproj", "./"]
RUN dotnet restore "YourProject.csproj"
COPY . .
RUN dotnet build "YourProject.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "YourProject.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "YourProject.dll"]
Text

.NET Core에서 Excel 셀을 빠르게 수정하기

핵심 기능을 시연하는 실용적인 예입니다. 이 코드에서는 기존 Excel 파일을 로드하고 특정 셀을 수정하는 방법을 보여줍니다:

using IronXL;
using System;

class QuickStartExample
{
    static void Main()
    {
        // Load existing Excel file - supports XLSX, XLS, XLSM, XLTX
        WorkBook workBook = WorkBook.Load("sales_report.xlsx");
        
        // Access the default worksheet (usually first sheet)
        WorkSheet sheet = workBook.DefaultWorkSheet;
        
        // Modify individual cells with different data types
        sheet["A1"].Value = "Q4 Sales Report";  // String value
        sheet["B2"].Value = DateTime.Now;       // Date value
        sheet["C2"].Value = 158750.50;          // Numeric value
        
        // Apply formulas for calculations
        sheet["D2"].Formula = "=C2*1.15";       // 15% markup
        sheet["E2"].Formula = "=D2-C2";         // Profit calculation
        
        // Bulk update a range of cells
        sheet["A5:A15"].Value = "Updated by Automation";
        
        // Style the header row
        sheet["A1:E1"].Style.Font.Bold = true;
        sheet["A1:E1"].Style.BackgroundColor = "#1F4788";
        sheet["A1:E1"].Style.Font.Color = "#FFFFFF";
        
        // Save the modified workbook
        workBook.SaveAs("sales_report_updated.xlsx");
        
        Console.WriteLine("Excel file updated successfully!");
    }
}

자동화에 이 패턴이 이상적인 이유는?

이 패턴은 결정적이며 사용자 상호작용을 요구하지 않기 때문에 자동화된 워크플로우에서 완벽하게 작동합니다. 이 코드를 이벤트 또는 시간 기반 일정에 의해 트리거되는 컨테이너에서 실행하도록 예약할 수 있으며, 이는 DevOps 자동화 시나리오에 이상적입니다. 엑셀 워크시트를 열고, 프로그래밍 방식으로 편집할 수 있는 기능은 효과적인 자동화 가능성을 제공합니다.

.NET Core Excel 편집 프로젝트 시작하기

신뢰할 수 있는 Excel 편집 솔루션을 구축하려면 적절한 프로젝트 설정이 필요합니다. 프로덕션 배포를 위한 모범 사례, 오류 처리로깅을 통합한 완전한 예제를 만들어 볼까요:

using IronXL;
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

public class ExcelProcessor
{
    private readonly ILogger<ExcelProcessor> _logger;
    private readonly string _workingDirectory;
    
    public ExcelProcessor(ILogger<ExcelProcessor> logger, string workingDirectory)
    {
        _logger = logger;
        _workingDirectory = workingDirectory;
    }
    
    public async Task ProcessExcelFileAsync(string fileName)
    {
        try
        {
            var filePath = Path.Combine(_workingDirectory, fileName);
            
            // Validate file exists
            if (!File.Exists(filePath))
            {
                _logger.LogError($"File not found: {filePath}");
                throw new FileNotFoundException("Excel file not found", fileName);
            }
            
            // Load workbook with error handling
            _logger.LogInformation($"Loading Excel file: {fileName}");
            WorkBook workBook = WorkBook.Load(filePath);
            
            // Process each worksheet
            foreach (var worksheet in workBook.WorkSheets)
            {
                _logger.LogInformation($"Processing worksheet: {worksheet.Name}");
                await ProcessWorksheetAsync(worksheet);
            }
            
            // Save with timestamp for version control
            var outputName = $"{Path.GetFileNameWithoutExtension(fileName)}_processed_{DateTime.Now:yyyyMMddHHmmss}.xlsx";
            var outputPath = Path.Combine(_workingDirectory, "output", outputName);
            
            // Ensure output directory exists
            Directory.CreateDirectory(Path.GetDirectoryName(outputPath));
            
            workBook.SaveAs(outputPath);
            _logger.LogInformation($"Saved processed file: {outputName}");
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, $"Error processing Excel file: {fileName}");
            throw;
        }
    }
    
    private async Task ProcessWorksheetAsync(WorkSheet worksheet)
    {
        // Example: Update timestamp in specific cell
        var timestampCell = worksheet["A1"];
        if (timestampCell.StringValue == "Last Updated:")
        {
            worksheet["B1"].Value = DateTime.Now;
            worksheet["B1"].FormatString = "yyyy-MM-dd HH:mm:ss";
        }
        
        // Example: Process data rows asynchronously
        await Task.Run(() =>
        {
            for (int row = 2; row <= worksheet.RowCount; row++)
            {
                // Skip empty rows
                if (worksheet[$"A{row}"].IsEmpty)
                    continue;
                
                // Apply business logic
                var quantity = worksheet[$"B{row}"].IntValue;
                var price = worksheet[$"C{row}"].DoubleValue;
                worksheet[$"D{row}"].Value = quantity * price;
                worksheet[$"E{row}"].Formula = $"=D{row}*0.08"; // Tax calculation
            }
        });
    }
}

오류 처리에 대한 모범 사례

신뢰할 수 있는 오류 처리는 프로덕션 배포에 필수적입니다. 위 예제는 로깅 통합 및 적절한 예외 처리를 보여주며, 이는 런타임에 직접 접근할 수 없는 컨테이너화된 환경에서 문제를 디버그하는 데 필수적입니다. 보안 조치 구현과 파일 크기 제한 검토를 고려하십시오.

특정 셀 값 편집하기

단순 업데이트에서 복잡한 데이터 변환까지 셀 값을 수정하는 다양한 기술을 탐색해봅시다. IronXL은 다양한 데이터 유형과 형식을 지원하면서 Excel 셀에 값을 쓰는 직관적인 방법을 제공합니다. 셀을 복사하고 셀 내용을 지우는 것도 필요에 따라 할 수 있습니다.

using IronXL;
using System;
using System.Linq;
using System.Collections.Generic;

public class CellEditingExamples
{
    public static void DemonstrateVariousCellEdits()
    {
        WorkBook workBook = WorkBook.Load("data.xlsx");
        WorkSheet sheet = workBook.DefaultWorkSheet;
        
        // 1. Simple value assignment
        sheet["A1"].Value = "Product Name";
        sheet["B1"].Value = 99.99;
        sheet["C1"].Value = true;
        sheet["D1"].Value = DateTime.Now;
        
        // 2. Using cell references with variables
        int rowIndex = 5;
        string columnLetter = "E";
        sheet[$"{columnLetter}{rowIndex}"].Value = "Dynamic Reference";
        
        // 3. Setting values with specific formatting
        sheet["F1"].Value = 0.175;
        sheet["F1"].FormatString = "0.00%"; // Display as 17.50%
        
        // 4. Currency formatting
        sheet["G1"].Value = 1234.56;
        sheet["G1"].FormatString = "$#,##0.00"; // Display as $1,234.56
        
        // 5. Date formatting variations
        var dateCell = sheet["H1"];
        dateCell.Value = DateTime.Now;
        dateCell.FormatString = "MMM dd, yyyy"; // Display as "Dec 25, 2024"
        
        // 6. Setting hyperlinks
        sheet["I1"].Value = "Visit Documentation";
        sheet["I1"].Hyperlink = "___PROTECTED_URL_54___";
        
        // 7. Applying conditional formatting
        foreach (var cell in sheet["J1:J10"])
        {
            cell.Value = new Random().Next(0, 100);
            if (cell.IntValue > 50)
            {
                cell.Style.BackgroundColor = "#90EE90"; // Light green for high values
            }
            else
            {
                cell.Style.BackgroundColor = "#FFB6C1"; // Light red for low values
            }
        }
        
        // 8. Working with formulas
        sheet["K1"].Formula = "=SUM(B1:B10)";
        sheet["K2"].Formula = "=AVERAGE(B1:B10)";
        sheet["K3"].Formula = "=IF(K2>50,\"Above Average\",\"Below Average\")";
        
        workBook.SaveAs("data_edited.xlsx");
    }
}

다양한 데이터 유형을 효율적으로 처리하기

IronXL은 데이터 유형을 자동으로 감지하고 변환하지만, 명시적 형식 지정을 통해 적절한 표시를 보장합니다. 라이브러리는 통화, 백분율, 날짜 및 사용자 정의 패턴을 위한 셀 데이터 형식 설정을 지원합니다. 고급 서식 옵션을 위해 Excel 숫자 서식을 탐색할 수 있습니다. 또한 셀 폰트 및 크기를 사용자 정의하고, 배경 패턴 및 색상을 적용하며, 셀 테두리 및 정렬을 구성할 수 있습니다.

여러 셀에 값 할당하기

대량 작업은 효율적인 Excel 처리를 위해 필수적입니다. IronXL은 여러 셀을 동시에 업데이트하기 쉽게 하는 효과적인 범위 선택 기능을 제공합니다. 필요에 따라 행과 열을 추가하고, 새 행과 열을 삽입셀을 병합할 수 있습니다:

using IronXL;
using System;
using System.Diagnostics;

public class BulkCellOperations
{
    public static void PerformBulkUpdates()
    {
        var stopwatch = Stopwatch.StartNew();
        
        WorkBook workBook = WorkBook.Load("inventory.xlsx");
        WorkSheet sheet = workBook.DefaultWorkSheet;
        
        // Method 1: Update entire column
        sheet["A:A"].Value = "Updated";
        Console.WriteLine($"Column update: {stopwatch.ElapsedMilliseconds}ms");
        
        // Method 2: Update specific range
        sheet["B2:B100"].Value = DateTime.Now.ToShortDateString();
        
        // Method 3: Update entire row
        sheet["1:1"].Style.Font.Bold = true;
        sheet["1:1"].Style.BackgroundColor = "#333333";
        sheet["1:1"].Style.Font.Color = "#FFFFFF";
        
        // Method 4: Update rectangular range
        sheet["C2:E50"].Formula = "=ROW()*COLUMN()";
        
        // Method 5: Update non-contiguous ranges efficiently
        var ranges = new[] { "F1:F10", "H1:H10", "J1:J10" };
        foreach (var range in ranges)
        {
            sheet[range].Value = "Batch Update";
            sheet[range].Style.BottomBorder.Type = BorderType.Double;
        }
        
        // Method 6: Conditional bulk updates
        var dataRange = sheet["K1:K100"];
        foreach (var cell in dataRange)
        {
            // Generate test data
            cell.Value = new Random().Next(1, 1000);
            
            // Apply conditional formatting based on value
            if (cell.IntValue > 750)
            {
                cell.Style.BackgroundColor = "#00FF00"; // Green for high values
                cell.Style.Font.Bold = true;
            }
            else if (cell.IntValue < 250)
            {
                cell.Style.BackgroundColor = "#FF0000"; // Red for low values
                cell.Style.Font.Color = "#FFFFFF";
            }
        }
        
        stopwatch.Stop();
        Console.WriteLine($"Total execution time: {stopwatch.ElapsedMilliseconds}ms");
        
        workBook.SaveAs("inventory_bulk_updated.xlsx");
    }
}

범위 작업의 효율성

범위 작업은 개별 셀을 반복하는 대신 단일 명령으로 실행되어 성능을 크게 향상시킵니다. 이러한 효율성은 대규모 데이터 세트를 처리하거나 자원이 제한된 컨테이너 환경 내에서 작업할 때 중요해집니다. 범위를 선택하고 조작하는 기능은 최소한의 코드로 효과적인 데이터 변환을 가능하게 합니다. 또한 셀 범위를 정렬하고, 셀 범위를 트림하고, 여러 범위를 결합할 수 있습니다.

일반적인 범위 선택 패턴

패턴문법설명
열 범위"A:A"전체 열 A 선택
행 범위"1:1"전체 행 1 선택
직사각형 범위"A1:C3"3x3 블록 선택
명명된 범위명명된 범위 생성 및 사용명확성을 위해
동적 범위프로그래밍 방식으로 범위 문자열 빌드유연한 선택을 위해

사용자 입력으로 셀 편집

사용자 입력 또는 외부 데이터 소스와 결합할 때 대화형 Excel 편집이 효과적입니다. 이 접근 방식은 매개 변수를 수락하고 사용자 지정 보고서를 생성하는 API를 구축하는 데 가치가 있습니다. 다양한 소스에서 Excel 데이터를 가져오거나 다양한 형식으로 내보내기를 원할 수 있습니다:

using IronXL;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class InteractiveExcelEditor
{
    public class EditRequest
    {
        public string FileName { get; set; }
        public string WorksheetName { get; set; }
        public Dictionary<string, object> CellUpdates { get; set; }
        public List<RangeUpdate> RangeUpdates { get; set; }
    }
    
    public class RangeUpdate
    {
        public string Range { get; set; }
        public object Value { get; set; }
        public CellStyle Style { get; set; }
    }
    
    public class CellStyle
    {
        public string BackgroundColor { get; set; }
        public bool Bold { get; set; }
        public string NumberFormat { get; set; }
    }
    
    public async Task<string> ProcessEditRequestAsync(EditRequest request)
    {
        try
        {
            // Load workbook
            WorkBook workBook = WorkBook.Load(request.FileName);
            WorkSheet sheet = string.IsNullOrEmpty(request.WorksheetName) 
                ? workBook.DefaultWorkSheet 
                : workBook.GetWorkSheet(request.WorksheetName);
            
            // Process individual cell updates
            if (request.CellUpdates != null)
            {
                foreach (var update in request.CellUpdates)
                {
                    var cell = sheet[update.Key];
                    cell.Value = update.Value;
                    
                    // Auto-detect and apply appropriate formatting
                    if (update.Value is decimal || update.Value is double)
                    {
                        cell.FormatString = "#,##0.00";
                    }
                    else if (update.Value is DateTime)
                    {
                        cell.FormatString = "yyyy-MM-dd";
                    }
                }
            }
            
            // Process range updates
            if (request.RangeUpdates != null)
            {
                foreach (var rangeUpdate in request.RangeUpdates)
                {
                    var range = sheet[rangeUpdate.Range];
                    range.Value = rangeUpdate.Value;
                    
                    // Apply styling if provided
                    if (rangeUpdate.Style != null)
                    {
                        if (!string.IsNullOrEmpty(rangeUpdate.Style.BackgroundColor))
                            range.Style.BackgroundColor = rangeUpdate.Style.BackgroundColor;
                        
                        if (rangeUpdate.Style.Bold)
                            range.Style.Font.Bold = true;
                        
                        if (!string.IsNullOrEmpty(rangeUpdate.Style.NumberFormat))
                            range.FormatString = rangeUpdate.Style.NumberFormat;
                    }
                }
            }
            
            // Generate unique output filename
            string outputFile = $"edited_{DateTime.Now:yyyyMMddHHmmss}_{request.FileName}";
            workBook.SaveAs(outputFile);
            
            return outputFile;
        }
        catch (Exception ex)
        {
            throw new InvalidOperationException($"Failed to process edit request: {ex.Message}", ex);
        }
    }
    
    // Example REST API endpoint implementation
    public static async Task<string> HandleApiRequest(string jsonRequest)
    {
        var request = System.Text.Json.JsonSerializer.Deserialize<EditRequest>(jsonRequest);
        var editor = new InteractiveExcelEditor();
        return await editor.ProcessEditRequestAsync(request);
    }
}

CI/CD 파이프라인과의 Excel 편집 통합

DevOps 시나리오를 위해, 빌드 및 배포 파이프라인에 Excel 처리를 통합하십시오. ASP.NET 애플리케이션에서 Excel 파일을 읽거나 필요한 경우 VB.NET Excel 파일을 사용할 수 있습니다:

# Example GitHub Actions workflow
name: Process Excel Reports

on:
  schedule:
    - cron: '0 2 * * *' # Run daily at 2 AM
  workflow_dispatch:

jobs:
  process-excel:
    runs-on: ubuntu-latest
    container:
      image: mcr.microsoft.com/dotnet/sdk:6.0
    
    steps:
    - uses: actions/checkout@v2
    
    - name: Restore dependencies
      run: dotnet restore
    
    - name: Build
      run: dotnet build --configuration Release
    
    - name: Process Excel files
      run: |
        dotnet run -- \
          --input-dir ./data/input \
          --output-dir ./data/output \
          --operation bulk-update
    
    - name: Upload processed files
      uses: actions/upload-artifact@v2
      with:
        name: processed-excel-files
        path: ./data/output/*.xlsx
Text

추가 Excel 자동화 리소스

Excel 자동화 기능을 확장하기 위해 이러한 특수 리소스를 탐색하십시오:

탐색할 고급 기능

IronXL은 기본 셀 편집을 넘어 광범위한 기능을 제공합니다:

Excel 처리 워크플로우 향상

다음과 같은 고급 기술을 고려하십시오:

엑셀 편집을 위한 빠른 참조 가이드

다음은 일반적인 엑셀 편집 작업을 위해 통합된 참조입니다:

작업코드 예시사용 사례
단일 셀 편집sheet["A1"].Value = "New Value"특정 데이터 포인트 업데이트
범위 편집sheet["A1:C10"].Value = "Bulk Update"효율성을 위한 일괄 업데이트
수식 적용sheet["D1"].Formula = "=SUM(A1:C1)"동적 계산
조건부 서식값에 따라 색상 적용시각적 데이터 분석
날짜 서식cell.FormatString = "yyyy-MM-dd"일관된 날짜 표시
통화 형식cell.FormatString = "$#,##0.00"재무 보고
셀 병합sheet["A1:C1"].Merge()헤더 및 제목 생성
열 자동 크기 조정sheet.AutoSizeColumn(0)가독성 향상

이 완전한 가이드는 .NET Core 환경에서 IronXL이 엑셀 자동화를 단순화하는 방법을 보여줍니다. 마이크로서비스를 구축하든, 컨테이너에 배포하든, 서버 없는 기능을 만들든, IronXL은 외부 종속성 없이 효율적인 엑셀 처리를 위한 필요한 도구를 제공합니다. 오늘 DevOps 워크플로에 이러한 패턴을 구현하여 보고서 생성 및 데이터 처리 작업을 간소화하십시오.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.