WinForms Enhanced Shapes Engine을 사용하여 보험 앱 구축 > 블로그 & Tips

본문 바로가기

Spread.NET

블로그 & Tips

WinForms Enhanced Shapes Engine을 사용하여 보험 앱 구축

페이지 정보

작성자 GrapeCity 작성일 20-03-04 00:00 조회 197회 댓글 0건

본문

Spread.NET 13의 새로운 Enhanced Shapes Engine을 사용하면 사용자 지정 도형 및 VBA 매크로 코드가 있는 Microsoft Excel® 매크로 사용 통합 문서( * .XLSM 파일)를 .NET WinForms 애플리케이션 실행 파일로 쉽게 이식할 수 있습니다 .


이 예제에서는 VBA 매크로 코드에서 사용자 지정 도형을 정의하는 Microsoft Excel®을 사용하여 GrapeCity Spread JavaScript 버전인 SpreadJS 12에서의 자동차 보험 청구 샘플 코드를 기반으로 템플릿 워크 시트를 작성했습니다 .


WinForms Enhanced Shapes Engine을 사용하여 보험 앱 구축


이 통합 문서를 만들기 위해 SpreadJS 데모 샘플에서 JavaScript 코드를 통합 문서에 추가된 새 모듈에서 VBA 매크로 코드로 이식했습니다. 그런 다음 도형 클릭 이벤트 핸들러의 JavaScript 코드를 자동차 부품 도형의 VBA 매크로 코드로 이식하고 템플릿 통합 문서가 SpreadJS 데모 샘플과 마찬가지로 Microsoft Excel®에서 작동하는지 확인했습니다.


최종 이식된 통합 문서는 다음과 같습니다.


car_repair_excel.xlsm


VBA 매크로를 보존하기위한 문서 캐싱


Spread.NET 13은 Microsoft Excel® 매크로 실행 통합 문서(* .XLSM 파일)를 가져올 수 있으며 내장된 VBA 매크로(피벗 테이블, 폼 컨트롤 등의 지원되지 않는 다른 내용)를 나중에 내보내기 위해서 메모리 스트림에 유지할 수 있습니다. 통합 문서, 워크 시트, 표, 차트 등을 변경 한 다음 결과를 XLSM에서 저장된 메모리 스트림과 병합한 다음 변경 사항을 내보내면 VBA 매크로 코드가 Microsoft Excel®에서 계속 작동합니다.


XLSM 로드하고 VBA 매크로 및 기타 지원되지 않는 내용을 유지하려면 ExcelOpenFlag.DocumentCaching 플래그만 사용하면 됩니다스프레드 디자이너 도구를 사용하는 경우 파일(File)-열기(Open) 대화 상자 하단에는 파일을 가져오기 전에 활성화할 ExcelOpenFlag 열거형을 선택할 수 있는 드롭 다운이 있습니다.


WinForms Enhanced Shapes Engine을 사용하여 보험 앱 구축


이 샘플에서는 스프레드 디자이너 도구를 사용하지 않는 대신 car_repair_excel.XLSM 템플릿이 WinForms 애플리케이션에 ExcelTemplate이라는 이름으로 새 리소스로 추가되었습니다. 


WinForms Enhanced Shapes Engine을 사용하여 보험 앱 구축


폼 초기화


폼(form) 생성자는 애플리케이션 리소스에서 XLSM 가져오기를 처리하고 스프레드 시트 컨트롤 초기화를 처리합니다.


[C#]

폼 생성자


public Form1()
{
    InitializeComponent();
    fpSpread1.Features.EnhancedShapeEngine = true;
    fpSpread1.Features.RichClipboard = true;
    using (MemoryStream s = new MemoryStream(ExcelTemplate.car_repair_excel))
    {
        fpSpread1.OpenExcel(s, FarPoint.Excel.ExcelOpenFlags.DocumentCaching);
    }
    fpSpread1.ActiveSheet.RowCount = 43;
    IWorkbook workbook = fpSpread1.AsWorkbook();
    for (int n = 0; n < workbook.ActiveSheet.Shapes.Count; n++)
    {
        IShape shape = workbook.ActiveSheet.Shapes[n];
        shape.CanMove = Moving.None;
        shape.CanRotate = false;
        shape.CanSize = Sizing.None;
        if (shape.Name == "Picture 2")
            continue;
        shape.Action += Shape_Action;
     }
     BindProperties();
}

[VB]


폼 생성자


Public Sub New()
    ' This call is required by the designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
    FpSpread1.Features.EnhancedShapeEngine = True
    FpSpread1.Features.RichClipboard = True
    Using s As MemoryStream = New MemoryStream(My.Resources.ExcelTemplate.car_repair_excel)
        FpSpread1.OpenExcel(s, FarPoint.Excel.ExcelOpenFlags.DocumentCaching)
    End Using
    FpSpread1.ActiveSheet.RowCount = 43
    Dim workbook As IWorkbook = FpSpread1.AsWorkbook()
    For n As Integer = 0 To workbook.ActiveSheet.Shapes.Count - 1
        Dim shape As IShape = workbook.ActiveSheet.Shapes(n)
        shape.CanMove = FarPoint.Win.Spread.DrawingSpace.Moving.None
        shape.CanRotate = False
        shape.CanSize = FarPoint.Win.Spread.DrawingSpace.Sizing.None
        If shape.Name = "Picture 2" Then
            Continue For
        End If
        AddHandler shape.Action, AddressOf Shape_Action
    Next n
    BindProperties()
End Sub


먼저 코드는 Enhanced Shape Engine 및 Rich Clipboard 기능을 활성화한 다음, 내부 메모리 스트림에 내장된 VBA을 보존하기 위해 ExcelOpenFlags.DocumentCaching을 사용하여 애플리케이션 리소스에서 템플릿 XLSM을 로드합니다. 그런 다음 RowCount가 43으로 설정하고 워크시트의 각 도형이 초기화되어 사용자가 CanMove , CanRotate 및 CanSize 속성을 사용하여 도형의 이동, 회전 및 크기 조정하지 못하도록 제한을 둡니다.


Picture 2 " 라는 이름의 도형에는 도형이 계층화되어 분해된 자동차 다이어그램의 배경 이미지가 포함되어 있으므로  Shape.Action 이벤트 셀 값들에 도형 속성들이 바인딩 처리하는 BindProperties 코드에 대한 이벤트 핸들러가 부착된 코드에 대해서는 도형을 건너뜁니다.


셀 값에 도형 속성 바인딩


BindProperties의 코드는 도형 속성을 Sheet2의 셀 값에 바인딩하는 작업을 처리합니다.:


[C#]

BindProperties


private void BindProperties()
{
    IWorkbook workbook = fpSpread1.AsWorkbook();
    IShapes shapes = workbook.Worksheets[0].Shapes;
    // bind shape properties to cells
    shapes["Front"].Bindings.Add("Left", "Sheet2!B2");
    shapes["Front"].Bindings.Add("Top", "Sheet2!C2");
    shapes["Front"].Bindings.Add("Width", "Sheet2!D2");
    shapes["Front"].Bindings.Add("Height", "Sheet2!E2");
    shapes["Front"].Bindings.Add("Line", "Sheet2!F2");
    shapes["Hood"].Bindings.Add("Left", "Sheet2!B3");
    shapes["Hood"].Bindings.Add("Top", "Sheet2!C3");
    shapes["Hood"].Bindings.Add("Width", "Sheet2!D3");
    shapes["Hood"].Bindings.Add("Height", "Sheet2!E3");
    shapes["Hood"].Bindings.Add("Line", "Sheet2!F3");
    shapes["FrontWindshield"].Bindings.Add("Left", "Sheet2!B4");
    shapes["FrontWindshield"].Bindings.Add("Top", "Sheet2!C4");
    shapes["FrontWindshield"].Bindings.Add("Width", "Sheet2!D4");
    shapes["FrontWindshield"].Bindings.Add("Height", "Sheet2!E4");
    shapes["FrontWindshield"].Bindings.Add("Line", "Sheet2!F4");
    shapes["Roof"].Bindings.Add("Left", "Sheet2!B5");
    shapes["Roof"].Bindings.Add("Top", "Sheet2!C5");
    shapes["Roof"].Bindings.Add("Width", "Sheet2!D5");
    shapes["Roof"].Bindings.Add("Height", "Sheet2!E5");
    shapes["Roof"].Bindings.Add("Line", "Sheet2!F5");
    shapes["RearTop"].Bindings.Add("Left", "Sheet2!B6");
    shapes["RearTop"].Bindings.Add("Top", "Sheet2!C6");
    shapes["RearTop"].Bindings.Add("Width", "Sheet2!D6");
    shapes["RearTop"].Bindings.Add("Height", "Sheet2!E6");
    shapes["RearTop"].Bindings.Add("Line", "Sheet2!F6");
    shapes["Rear"].Bindings.Add("Left", "Sheet2!B7");
    shapes["Rear"].Bindings.Add("Top", "Sheet2!C7");
    shapes["Rear"].Bindings.Add("Width", "Sheet2!D7");
    shapes["Rear"].Bindings.Add("Height", "Sheet2!E7");
    shapes["Rear"].Bindings.Add("Line", "Sheet2!F7");
    shapes["LeftFront"].Bindings.Add("Left", "Sheet2!B8");
    shapes["LeftFront"].Bindings.Add("Top", "Sheet2!C8");
    shapes["LeftFront"].Bindings.Add("Width", "Sheet2!D8");
    shapes["LeftFront"].Bindings.Add("Height", "Sheet2!E8");
    shapes["LeftFront"].Bindings.Add("Line", "Sheet2!F8");
    shapes["LeftFrontDoor"].Bindings.Add("Left", "Sheet2!B9");
    shapes["LeftFrontDoor"].Bindings.Add("Top", "Sheet2!C9");
    shapes["LeftFrontDoor"].Bindings.Add("Width", "Sheet2!D9");
    shapes["LeftFrontDoor"].Bindings.Add("Height", "Sheet2!E9");
    shapes["LeftFrontDoor"].Bindings.Add("Line", "Sheet2!F9");
    shapes["LeftBackDoor"].Bindings.Add("Left", "Sheet2!B10");
    shapes["LeftBackDoor"].Bindings.Add("Top", "Sheet2!C10");
    shapes["LeftBackDoor"].Bindings.Add("Width", "Sheet2!D10");
    shapes["LeftBackDoor"].Bindings.Add("Height", "Sheet2!E10");
    shapes["LeftBackDoor"].Bindings.Add("Line", "Sheet2!F10");
    shapes["LeftBack"].Bindings.Add("Left", "Sheet2!B11");
    shapes["LeftBack"].Bindings.Add("Top", "Sheet2!C11");
    shapes["LeftBack"].Bindings.Add("Width", "Sheet2!D11");
    shapes["LeftBack"].Bindings.Add("Height", "Sheet2!E11");
    shapes["LeftBack"].Bindings.Add("Line", "Sheet2!F11");
    shapes["RightFront"].Bindings.Add("Left", "Sheet2!B12");
    shapes["RightFront"].Bindings.Add("Top", "Sheet2!C12");
    shapes["RightFront"].Bindings.Add("Width", "Sheet2!D12");
    shapes["RightFront"].Bindings.Add("Height", "Sheet2!E12");
    shapes["RightFront"].Bindings.Add("Line", "Sheet2!F12");
    shapes["RightFrontDoor"].Bindings.Add("Left", "Sheet2!B13");
    shapes["RightFrontDoor"].Bindings.Add("Top", "Sheet2!C13");
    shapes["RightFrontDoor"].Bindings.Add("Width", "Sheet2!D13");
    shapes["RightFrontDoor"].Bindings.Add("Height", "Sheet2!E13");
    shapes["RightFrontDoor"].Bindings.Add("Line", "Sheet2!F13");
    shapes["RightBackDoor"].Bindings.Add("Left", "Sheet2!B14");
    shapes["RightBackDoor"].Bindings.Add("Top", "Sheet2!C14");
    shapes["RightBackDoor"].Bindings.Add("Width", "Sheet2!D14");
    shapes["RightBackDoor"].Bindings.Add("Height", "Sheet2!E14");
    shapes["RightBackDoor"].Bindings.Add("Line", "Sheet2!F14");
    shapes["RightBack"].Bindings.Add("Left", "Sheet2!B15");
    shapes["RightBack"].Bindings.Add("Top", "Sheet2!C15");
    shapes["RightBack"].Bindings.Add("Width", "Sheet2!D15");
    shapes["RightBack"].Bindings.Add("Height", "Sheet2!E15");
    shapes["RightBack"].Bindings.Add("Line", "Sheet2!F15");
}

[VB]

BindProperties


Private Sub BindProperties()
    Dim workbook As IWorkbook = FpSpread1.AsWorkbook()
    Dim shapes As IShapes = workbook.Worksheets(0).Shapes
    ' bind shape properties to cells
    shapes("Front").Bindings.Add("Left", "Sheet2!B2")
    shapes("Front").Bindings.Add("Top", "Sheet2!C2")
    shapes("Front").Bindings.Add("Width", "Sheet2!D2")
    shapes("Front").Bindings.Add("Height", "Sheet2!E2")
    shapes("Front").Bindings.Add("Line", "Sheet2!F2")
    shapes("Hood").Bindings.Add("Left", "Sheet2!B3")
    shapes("Hood").Bindings.Add("Top", "Sheet2!C3")
    shapes("Hood").Bindings.Add("Width", "Sheet2!D3")
    shapes("Hood").Bindings.Add("Height", "Sheet2!E3")
    shapes("Hood").Bindings.Add("Line", "Sheet2!F3")
    shapes("FrontWindshield").Bindings.Add("Left", "Sheet2!B4")
    shapes("FrontWindshield").Bindings.Add("Top", "Sheet2!C4")
    shapes("FrontWindshield").Bindings.Add("Width", "Sheet2!D4")
    shapes("FrontWindshield").Bindings.Add("Height", "Sheet2!E4")
    shapes("FrontWindshield").Bindings.Add("Line", "Sheet2!F4")
    shapes("Roof").Bindings.Add("Left", "Sheet2!B5")
    shapes("Roof").Bindings.Add("Top", "Sheet2!C5")
    shapes("Roof").Bindings.Add("Width", "Sheet2!D5")
    shapes("Roof").Bindings.Add("Height", "Sheet2!E5")
    shapes("Roof").Bindings.Add("Line", "Sheet2!F5")
    shapes("RearTop").Bindings.Add("Left", "Sheet2!B6")
    shapes("RearTop").Bindings.Add("Top", "Sheet2!C6")
    shapes("RearTop").Bindings.Add("Width", "Sheet2!D6")
    shapes("RearTop").Bindings.Add("Height", "Sheet2!E6")
    shapes("RearTop").Bindings.Add("Line", "Sheet2!F6")
    shapes("Rear").Bindings.Add("Left", "Sheet2!B7")
    shapes("Rear").Bindings.Add("Top", "Sheet2!C7")
    shapes("Rear").Bindings.Add("Width", "Sheet2!D7")
    shapes("Rear").Bindings.Add("Height", "Sheet2!E7")
    shapes("Rear").Bindings.Add("Line", "Sheet2!F7")
    shapes("LeftFront").Bindings.Add("Left", "Sheet2!B8")
    shapes("LeftFront").Bindings.Add("Top", "Sheet2!C8")
    shapes("LeftFront").Bindings.Add("Width", "Sheet2!D8")
    shapes("LeftFront").Bindings.Add("Height", "Sheet2!E8")
    shapes("LeftFront").Bindings.Add("Line", "Sheet2!F8")
    shapes("LeftFrontDoor").Bindings.Add("Left", "Sheet2!B9")
    shapes("LeftFrontDoor").Bindings.Add("Top", "Sheet2!C9")
    shapes("LeftFrontDoor").Bindings.Add("Width", "Sheet2!D9")
    shapes("LeftFrontDoor").Bindings.Add("Height", "Sheet2!E9")
    shapes("LeftFrontDoor").Bindings.Add("Line", "Sheet2!F9")
    shapes("LeftBackDoor").Bindings.Add("Left", "Sheet2!B10")
    shapes("LeftBackDoor").Bindings.Add("Top", "Sheet2!C10")
    shapes("LeftBackDoor").Bindings.Add("Width", "Sheet2!D10")
    shapes("LeftBackDoor").Bindings.Add("Height", "Sheet2!E10")
    shapes("LeftBackDoor").Bindings.Add("Line", "Sheet2!F10")
    shapes("LeftBack").Bindings.Add("Left", "Sheet2!B11")
    shapes("LeftBack").Bindings.Add("Top", "Sheet2!C11")
    shapes("LeftBack").Bindings.Add("Width", "Sheet2!D11")
    shapes("LeftBack").Bindings.Add("Height", "Sheet2!E11")
    shapes("LeftBack").Bindings.Add("Line", "Sheet2!F11")
    shapes("RightFront").Bindings.Add("Left", "Sheet2!B12")
    shapes("RightFront").Bindings.Add("Top", "Sheet2!C12")
    shapes("RightFront").Bindings.Add("Width", "Sheet2!D12")
    shapes("RightFront").Bindings.Add("Height", "Sheet2!E12")
    shapes("RightFront").Bindings.Add("Line", "Sheet2!F12")
    shapes("RightFrontDoor").Bindings.Add("Left", "Sheet2!B13")
    shapes("RightFrontDoor").Bindings.Add("Top", "Sheet2!C13")
    shapes("RightFrontDoor").Bindings.Add("Width", "Sheet2!D13")
    shapes("RightFrontDoor").Bindings.Add("Height", "Sheet2!E13")
    shapes("RightFrontDoor").Bindings.Add("Line", "Sheet2!F13")
    shapes("RightBackDoor").Bindings.Add("Left", "Sheet2!B14")
    shapes("RightBackDoor").Bindings.Add("Top", "Sheet2!C14")
    shapes("RightBackDoor").Bindings.Add("Width", "Sheet2!D14")
    shapes("RightBackDoor").Bindings.Add("Height", "Sheet2!E14")
    shapes("RightBackDoor").Bindings.Add("Line", "Sheet2!F14")
    shapes("RightBack").Bindings.Add("Left", "Sheet2!B15")
    shapes("RightBack").Bindings.Add("Top", "Sheet2!C15")
    shapes("RightBack").Bindings.Add("Width", "Sheet2!D15")
    shapes("RightBack").Bindings.Add("Height", "Sheet2!E15")
    shapes("RightBack").Bindings.Add("Line", "Sheet2!F15")
End Sub


이 코드는 IShape.Bindings.Add 메소드를 사용하여 도형의 왼쪽, 위쪽,너비, 높이  속성에 대한 바인딩을 Sheet2의 셀에 추가 합니다. 또한 바인딩에 사용할 수 있는 도형의 속성은 도형의 이름(예: "Colud" 또는 "Diamond")을 지정할 수 있는 AutoShapeType, 글씨 크기, 굵기, 기울임꼴,브러쉬(색상), 글씨체 (예:"8.5 true false red MS Comic Sans_")를 지정할 수 있는 TextEffect, 테마 색상,색상,이미지 url ARGB/HTML 코드 컬러 패턴 (theme-color[SchemeThemeColors] known-color[KnownColor] image-url ARGB/HTML-code-color pattern)(패턴을 사용하는 경우 2가지 색상을 정의할 수 있습니다.)등을 지정할 수 있는  채우기 포함합니다. 선 속성을 바인딩하는 문법은 크기, 스타일[LineDashStyle],브러쉬(색상) (예:"1 solid blue")입니다.


도형 액션


Shape_Action 이벤트를 처리하는 코드는 car_repair_excel.XLSM 템플릿 통합 문서의 VBA 코드와 동일합니다 .


[C#]

Shape_Action


private void Shape_Action(object sender, ShapeEventArgs e)
{
    IWorkbook workbook = fpSpread1.AsWorkbook();
    IWorksheet worksheet = workbook.ActiveSheet;
    IShapes shapes = worksheet.Shapes;
    if (e.Shape != null)
    {
        string name = e.Shape.Name;
        if (e.Shape.Fill.Transparency == 0.99)
        {
            e.Shape.Fill.Transparency = 0.5;
            if (name == "Front" || name == "Rear")
                shapes["BumperDamage"].Fill.Transparency = 0.5;
            if (name == "Roof")
                shapes["RoofDamage"].Fill.Transparency = 0.5;
            if (name == "RoofDamage")
                shapes["Roof"].Fill.Transparency = 0.5;
            if (name == "HighSeverity" || name == "MediumSeverity" || name == "LowSeverity")
            {
                shapes["HighSeverity"].Fill.Transparency = 0.99;
                shapes["MediumSeverity"].Fill.Transparency = 0.99;
                shapes["LowSeverity"].Fill.Transparency = 0.99;
                shapes[name].Fill.Transparency = 0.5;
            }
        }
        else
        {
            e.Shape.Fill.Transparency = 0.99;
            if (name == "Front" && shapes["Rear"].Fill.Transparency == 0.99)
                shapes["BumperDamage"].Fill.Transparency = 0.99;
            if (name == "Rear" && shapes["Front"].Fill.Transparency == 0.99)
                shapes["BumperDamage"].Fill.Transparency = 0.99;
            if (name == "Roof")
                shapes["RoofDamage"].Fill.Transparency = 0.99;
            if( name == "RoofDamage")
                shapes["Roof"].Fill.Transparency = 0.99;
        }
    }
}

[VB]


Shape_Action


Private Sub Shape_Action(ByVal sender As Object, ByVal e As Drawing.ShapeEventArgs)
    Dim workbook As IWorkbook = FpSpread1.AsWorkbook()
    Dim worksheet As IWorksheet = workbook.ActiveSheet
    Dim shapes As IShapes = worksheet.Shapes
    If Not IsNothing(e.Shape) Then
        Dim name As String = e.Shape.Name
        If e.Shape.Fill.Transparency = 0.99 Then
            e.Shape.Fill.Transparency = 0.5
            If name = "Front" Or name = "Rear" Then shapes("BumperDamage").Fill.Transparency = 0.5
            If name = "Roof" Then shapes("RoofDamage").Fill.Transparency = 0.5
            If name = "RoofDamage" Then shapes("Roof").Fill.Transparency = 0.5
            If name = "HighSeverity" Or name = "MediumSeverity" Or name = "LowSeverity" Then
                shapes("HighSeverity").Fill.Transparency = 0.99
                shapes("MediumSeverity").Fill.Transparency = 0.99
                shapes("LowSeverity").Fill.Transparency = 0.99
                shapes(name).Fill.Transparency = 0.5
            End If
        Else
            e.Shape.Fill.Transparency = 0.99
            If name = "Front" And shapes("Rear").Fill.Transparency = 0.99 Then shapes("BumperDamage").Fill.Transparency = 0.99
            If name = "Rear" And shapes("Front").Fill.Transparency = 0.99 Then shapes("BumperDamage").Fill.Transparency = 0.99
            If name = "Roof" Then shapes("RoofDamage").Fill.Transparency = 0.99
            If name = "RoofDamage" Then shapes("Roof").Fill.Transparency = 0.99
        End If
    End If
End Sub


이 코드는 자동차 부품 도형에 대한 선택 동작을 구현하기 위해 0.99 (거의 완전 투명)에서 0.5(반투명)사이의 Fill.Transparency(채우기 투명도) 전환을 처리합니다. 일부 도형은 서로 연결되어 하나를 선택하면 다른 도형도 선택되며 특정 도형을 선택 취소하면 다른 관련 도형도 선택 취소가 됩니다.


도형에 대한 Action 이벤트를 처리 할 때 도형을 마우스 왼쪽 버튼으로 클릭하면 Action 이벤트 핸들러가 호출되고 워크시트에서 일반적으로 도형을 선택하는 왼쪽 클릭의 정규 처리가 생략됩니다. Action 이벤트가 도형에 mapping된 경우 도형을 선택하기 위해서는 마우스 오른쪽 버튼을 클릭해야 합니다.


DocumentCaching으로 파일 저


File(파일)-Save(저장) 메뉴의 코드는 ExcelSaveFlags.DocumentCaching을 사용하여 통합 문서 저장을 처리합니다 .


[C#]

SaveToolStripMenuItem_Click


private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
{
    SaveFileDialog d = new SaveFileDialog();
    d.Filter = "Excel Macro-enabled Workbook (*.XLSM)|*.XLSM";
    d.FilterIndex = 0;
    d.Title = "Save File";
    if (d.ShowDialog() == DialogResult.OK)
    {
        fpSpread1.SaveExcel(d.FileName, FarPoint.Excel.ExcelSaveFlags.DocumentCaching | FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat);
    }
}

[VB]

SaveToolStripMenuItem_Click


Private Sub SaveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveToolStripMenuItem.Click
    Dim d As New SaveFileDialog
    d.Filter = "Excel Macro-enabled Workbook (*.XLSM)|*.XLSM"
    d.FilterIndex = 0
    d.Title = "Save File"
    If d.ShowDialog() = DialogResult.OK Then
        FpSpread1.SaveExcel(d.FileName, FarPoint.Excel.ExcelSaveFlags.DocumentCaching Or FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
    End If
End Sub


SaveToolStripMenuItem_Click의 코드내보내진 XLSM 내부에서 VBA 매크로 코드를 그대로 유지하는 ExcelSageFlags.DocumentCaching 플래그를 사용하여 파일 저장을 처리합니다.


샘플 :

샘플에서 C# VB이 사용가능합니다. :


CarInsuranceClaimCS.zip | CarInsuranceClaimVB.zip 

  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@grapecity.com | 전화 : 1670-0583 | 경기도 안양시 동안구 시민대로 230, B-703(관양동, 아크로타워) 그레이프시티(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 Copyright ⓒ 2021 GrapeCity inc.