GcExcel v5 서비스팩 2 > 새로운 소식

본문 바로가기

Java & Kotlin API

새로운 소식

서비스팩 GcExcel v5 서비스팩 2

페이지 정보

작성자 GrapeCity 작성일 22-09-01 10:20 조회 68회 댓글 0건

본문

GcExcel API에서 제공되는 고급 기능을 사용하여 Excel 스프레드시트를 생성할 수 있는 최신 기능을 소개합니다. API에 추가된 새로운 Excel 함수, 피벗 테이블의 향상된 기능, 완전히 새로운 Excel 양식 컨트롤, 데이터 소스로 JSON 지원, .NET 및 Java와 유사한 여러 새로운 추가 기능을 제공합니다. 아래에서 주요 내용을 확인하십시오.

Excel 양식 컨트롤을 추가하는 새 API

워크시트에 추가한 양식 컨트롤을 통해 스프레드시트에서 데이터를 수집하고 표시할 수 있습니다. 목록 상자, 체크박스, 버튼과 같은 컨트롤은 워크시트를 구조화하고 데이터를 관리하는 데 도움이 됩니다. GcExcel은 이제 API가 Excel 양식 컨트롤을 프로그래밍 방식으로 추가할 수 있도록 지원합니다. 표준 양식 컨트롤을 사용하여 Excel 양식을 만들어 사용자 정의하거나 사용자 데이터를 수집하거나 양식 컨트롤 값을 프로그래밍 방식으로 검색할 수 있습니다. 또한 여러 Excel 스프레드시트에 양식 컨트롤이 포함된 경우 스프레드시트는 GcExcel 개체 모델로 로드될 수 있으며 양식 컨트롤을 수정할 수 있습니다.

GcExcel은 IControl 유형의 양식 컨트롤의 모든 일반 멤버를 추가하는 IControlCollection을 도입합니다. Worksheet.Controls를 사용하면 컨트롤을 추가하거나 액세스할 수 있습니다. 지원되는 컨트롤은 다음과 같습니다.

  • 버튼
  • DropDown
  • CheckBox
  • 스피너
  • ListBox
  • OptionButton
  • GroupBox
  • 레이블
  • ScrollBar

이 지원을 통해 다음 기능도 사용할 수 있습니다.

  • 각 컨트롤에는 고유한 속성이 있습니다. 각 컨트롤의 특정 API를 사용하여 해당 속성을 설정할 수 있습니다. 예를 들어 다음 코드는 버튼 컨트롤에 적용되는 속성을 설정하는 방법을 보여줍니다.

    var workbook = new GrapeCity.Documents.Excel.Workbook();       
    IWorksheet ws = workbook.Worksheets["Sheet1"];
    
    var button = ws.Controls.AddButton(50, 30, 120, 40);
    button.Text = "Submit";
    button.PrintObject = true;
    button.HorizontalTextAlignment = HorizontalAlignment.Center;
    button.VerticalTextAlignment = VerticalAlignment.Center;
    
    // Save to an excel file
    workbook.Save("ButtonsBasicUsage.xlsx");

    버튼

  • 양식 컨트롤 및 양식 컨트롤 값 수정Worksheet.Controls 컬렉션을 사용하여 컨트롤에 액세스합니다. CheckBox, OptionButton, ListBox, DropDown 및 Scrollbar 양식 컨트롤의 LinkedCell 속성은 컨트롤의 값을 연결된 셀에 바인딩하거나 연결된 셀을 컨트롤의 값에 바인딩하도록 돕습니다. LinkedCell 속성을 사용하여 컨트롤의 값을 가져올 수 있습니다.

  • 셰이프로 양식 컨트롤 사용 - 새로운 옵션인 FormControl이 ShapeType 열거형에 추가되었으며 이는 양식 컨트롤이 셰이프 유형인지 여부를 확인할 수 있습니다. 또한 .ShapeRange를 사용하여 컨트롤 셰이프 복제와 같은 양식 컨트롤의 셰이프 기능 일부를 사용하거나 셀에서 셰이프를 복사할 수 있습니다.

  • Excel I/O 및 JSON I/O로 양식 컨트롤 사용

  • PDF, HTML 및 이미지로 내보내기(이미지로 내보냄)

피드백 양식


자세한 정보는 다음 리소스를 확인하십시오.


.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모

GcExcel 템플릿의 향상된 기능

페이지가 매겨진 템플릿

페이지에 고정된 수의 행을 원하며 다음 워크시트에서 반복할 동일한 레이아웃이 필요한 특정 템플릿이 있는 경우 통합 문서를 별도의 워크시트로 페이지를 매기도록 선택할 수 있습니다. GcExcel 템플릿은 true인 경우 통합 문서를 별도의 워크시트로 페이지를 매길 수 있는 전역 부울 속성인 'TemplateOptions.PaginationMode'를 도입합니다. 동시에 false인 경우 템플릿 레이아웃의 일반적인 규칙과 페이지 매김이 뒤따릅니다. true인 경우 데이터를 반복해야 하는 셀의 새로운 CountPerPage 속성(CP)을 정의할 수 있습니다. 속성은 페이지에서 생성된 템플릿 셀의 인스턴스(레코드) 수를 제한합니다. 레코드 수가 CP의 값을 초과하는 경우 템플릿과 동일한 레이아웃으로 새 워크시트가 자동으로 생성되거나 페이지가 매겨집니다. "CountPerPage" 속성은 워크시트에서 그룹화된 레코드 수를 참조합니다.

다음 스냅샷은 템플릿 셀에 설정된 10이라는 CP 값을 보여줍니다. FM=O는 템플릿 셀이 확장되는 경우 새 인스턴스가 아래 셀을 재정의한다고 표시합니다.

페이지가 매겨진 템플릿

페이지가 매겨진 템플릿

페이지가 매겨진 템플릿

페이지가 매겨진 템플릿


CountPerPage(CP) 속성이 작동할 특정 조건이 있습니다. 예를 들어 Group(G) 속성이 Normal/Merge/Repeat으로 설정되면 레코드가 그룹화되며 개수는 생성된 그룹의 수를 참조합니다. Group(G) 속성이 List로 설정되면 레코드는 그룹화되지 않으며 개수는 실제 레코드 개수를 참조합니다. 아래 리소스에서 추가 세부 정보를 알아보십시오.


.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모


템플릿 언어의 디버그 모드

이제 템플릿이 올바르게 확장되었는지 여부를 확인하기 위해 원본 템플릿 파일을 열 필요가 더 이상 없습니다. GcExcel은 TemplateOptions에서 정의된 이름 TemplateOptions.DebugMode를 지원합니다. DebugMode가 true인 경우 원본 템플릿 시트는 확장된 템플릿 시트 2 옆의 시트 1에 나타납니다.

원본 템플릿

확장된 템플릿


.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모

차트 데이터 표 지원

차트의 데이터 표는 데이터를 편리하게 보거나 분석하는 데 유용합니다. Excel에서 데이터 표는 Excel 차트 아래에 표시됩니다. 이는 특히 유용하므로 소스 데이터와 차트 데이터를 일치시키도록 해당 시트 또는 다른 시트 내에서 다른 위치로 스크롤링하는 대신 데이터 및 차트를 함께 분석할 수 있습니다. 이를 돕기 위해 GcExcel은 두 개의 새로운 속성을 도입합니다. IChart.HasDataTable은 데이터 표를 차트에 추가할지 여부를 true 또는 false로 설정하며 IChart.DataTable은 차트의 데이터 표를 나타내어 글꼴, 서식, 범례 키 표시 등과 같은 데이터 표에서 설정할 다양한 옵션을 제공할 수 있습니다.

코드 뒤에 오는 스냅샷의 데이터 표는 새로운 API를 사용하여 추가됩니다. 데이터 표의 서식은 사용자 정의할 수 있습니다. 아래 코드를 확인해 보십시오.

IWorksheet worksheet = workbook.Worksheets[0];

// Set data.
worksheet.Range["A1:C3"].Value = new object[,]
{
    {"BUDGET TOTALS", "ESTIMATED", "ACTUAL"},
    {"Income", 63300, 57450},
    {"Expenses", 54500, 49630}
};

//Create chart.
GrapeCity.Documents.Excel.Drawing.IShape shape = worksheet.Shapes.AddChart(GrapeCity.Documents.Excel.Drawing.ChartType.ColumnClustered, 250, 0, 350, 250);
shape.Chart.SeriesCollection.Add(worksheet.Range["A1:C3"]);
shape.Chart.ChartTitle.Text = "Estimated vs Actual";

//Display the data table.
shape.Chart.HasDataTable = true;

//Config the data table.
GrapeCity.Documents.Excel.Drawing.IDataTable datatable = shape.Chart.DataTable;
datatable.Format.Line.Color.ObjectThemeColor = ThemeColor.Accent6;
datatable.Font.Color.ObjectThemeColor = ThemeColor.Accent2;
datatable.Font.Size = 9;

// Save to an excel file
workbook.Save("chartdatatable.xlsx");

데이터 표


.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모

피벗 테이블에 계산된 항목 추가

계산된 항목은 피벗 테이블에 사용자 정의 수식을 추가하도록 도와 소스 데이터에 없는 다른 항목에서 사용자 정의 계산을 수행합니다. GcExcel은 다음 API를 도입합니다.

  • 지정된 PivotTable 필드에서 계산된 모든 항목을 나타내도록 CalculatedItems 컬렉션을 가져오는 IPivotField.CalculatedItems()
  • 계산된 새로운 항목을 만들 ICalculatedItems.Add(문자열 이름, 문자열 수식)
  • 이름별로 계산된 필드를 삭제하는 ICalculatedItems.Remove(문자열 이름)
  • 계산된 항목 수식을 가져오거나 설정하는 IPivotItem.Formula

피벗 테이블 셀의 값이 두 개 이상의 계산된 항목의 영향을 받는 경우 값은 계산 순서에서 마지막 수식에 따라 결정됩니다. GcExcel로 다음 API를 사용하여 해결 순서를 설정할 수 있습니다.

  • IPivotFormula는 콘텐츠를 나타내는 개체이며 계산된 항목의 순서를 해결합니다.
  • IPivotTable.IPivotFormulas()를 사용하여 지정된 PivotTable 필드에서 모든 IPivotFormula를 나타내는 IPivotFormula 컬렉션을 가져올 수 있습니다.
  • IPivotFormula.Index{get;set;}를 사용하여 현재 PivotFormula의 인덱스를 가져오거나 설정할 수 있습니다.

아래 스프레드시트는 계산된 항목으로 국가 및 제품을 설정합니다. 'Country' 계산된 항목은 동일한 대륙에 있는 국가의 판매 값을 추가하며 제품 계산된 항목은 iPhone13 이상이 이러한 항목에 대해 Visible을 False로 설정하므로 $2,500의 값으로 모든 제품을 설정합니다.

ICalculatedItems countryCalcItems = calculatedItemTable.PivotFields["Country"].CalculatedItems();
ICalculatedItems productCalcItems = calculatedItemTable.PivotFields["Product"].CalculatedItems();

// add some calculated items
countryCalcItems.Add("Oceania", "=Australia+NewZealand");
countryCalcItems.Add("Europe", "=France+Germany");
countryCalcItems.Add("America", "=Canada");

productCalcItems.Add("IPhone 13", "=2500");

// hide the duplicate normal item.
IPivotItems countrys = calculatedItemTable.PivotFields["Country"].PivotItems;
countrys["United Kingdom"].Visible = false;
countrys["United States"].Visible = false;

IPivotItems products = calculatedItemTable.PivotFields["Product"].PivotItems;
products["IPhone 13"].Visible = false;
calculatedItemSheet.Range["A:I"].AutoFit();

calculatedItemSheet.Activate();

// Save to an excel file
workbook.Save("Calculateditem.xlsx");

계산된 항목


.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모

데이터 바인딩에서 DataSource로 JSON 지원

이제 데이터 소스로 JSON 문자열을 사용하여 Excel 스프레드시트를 바인딩할 수 있습니다. worksheet.DataSource는 이제 데이터 소스로 JSON 문자열을 허용하는 JsonDataSource 클래스에 직접 바인딩될 수 있습니다. 다음 예제 코드는 JSON 파일에서 데이터를 가져와 워크시트에 바인딩합니다.

string jsonStr = "[{\"name\":\"jack\",\"age\":12},{\"name\":\"alice\",\"age\":25}]";
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.Worksheets[0];
worksheet.DataSource = new JsonDataSource(jsonStr);
worksheet.Range["A1"].BindingPath = "name";
workbook.Save("DataSource.xlsx");

JSON


.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모

사용자 정의 함수에서 IsVolatile 속성 지원

사용자 정의 함수를 사용하는 경우 GcExcel은 동일한 이름 및 매개 변수로 동일한 열에 수식의 캐시를 저장합니다. 이로 인해 동일한 열에 한 번만 평가된 동일한 수식이 만들어집니다. 사용자 정의 함수를 정의하는 동안 GcExcel은 IsVolatile 부울 속성을 지원합니다. 속성은 사용자 정의 함수를 사용하거나 사용하지 않는 경우 캐시를 사용할지 여부를 제어합니다.

다음 예제에서는 GUID 생성을 위해 사용자 정의 함수를 만드는 방법을 설명합니다. 매번 고유한 GUID를 생성하려면 사용자 정의 함수는 캐시를 사용해서는 안 됩니다. 따라서 예제 코드는 IsVolatile 속성을 true로 설정하여 새 GUID가 모든 호출에서 생성됩니다.

//create a new workbook
var workbook = new GrapeCity.Documents.Excel.Workbook();

GrapeCity.Documents.Excel.Workbook.AddCustomFunction(new GeneralID());

IWorksheet worksheet = workbook.Worksheets[0];
worksheet.Range["A1"].Formula = "GeneralID()";
var valueA1Before = worksheet.Range["A1"].Value;
worksheet.Range["A2"].Formula = "GeneralID()";
// A1's value has changed.
var valueA1After = worksheet.Range["A1"].Value;

/* Implementation of GeneralID

public class GeneralID : CustomFunction
{
    public GeneralID() : base("GeneralID", FunctionValueType.Object)
    {
        this.IsVolatile = true;
    }

    public override object Evaluate(object[] arguments, ICalcContext context)
    {
        return Guid.NewGuid().ToString("N");
    }
}

*/

.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모

정확한 범위 경계 가져오기

GcExcel .NET는 RectangleF가 아닌 범위 경계의 더욱 정확한 값을 반환하는 새로운 CellInfo.GetAccurateRangeBoundary(..) 메서드를 추가합니다.

다음 코드는 범위의 정확한 범위 경계를 가져오며 정확한 위치에서 셰이프를 추가합니다.

// Get the absolute location and size of the Range["G1"] in the worksheet.
IRange range = worksheet.Range["F1:G1"];
RectangleF rect = GrapeCity.Documents.Excel.CellInfo.GetAccurateRangeBoundary(range);
// Add the image to the Range["G1"]
System.IO.Stream stream = this.GetResourceStream("logo.png");
worksheet.Shapes.AddPictureInPixel(stream, GrapeCity.Documents.Excel.Drawing.ImageType.PNG, rect.X, rect.Y, rect.Width, rect.Height);

// Save to an excel file
workbook.Save("getrangeboundary.xlsx");

릴리스


.NET 도움말 | .NET 데모

스프레드시트에서 SVG 이미지 지원

GcExcel은 IShapes.AddPicureInPixel(..) 메서드를 추가하여 SVG 서식에서 이미지를 추가합니다. 또한 ToImage(..) 메서드는 다음을 위해 SVG 그림에 내보내기를 지원합니다.

  • 범위를 SVG 그림에 내보내도록 IRange.ToImage(문자열 파일 이름) 메서드 사용
  • 시트를 SVG 그림에 내보내도록 ISheet.ToImage(문자열 파일 이름) 메서드 사용
  • 셰이프를 SVG 그림에 내보내도록 IShape.ToImage(문자열 파일 이름) 메서드 사용

또한 GcExcel은 다음 상황에서 SVG 이미지를 사용하여 스프레드시트를 지원합니다.

  • Excel 파일의 손실 없는 가져오기 및 내보내기
  • JSON I/O
  • PDF/HTML/이미지 파일에 내보내기

참고: Java에서 GcExcel API와 SVG 이미지를 사용하려면 확장 패키지 batik(1.14) 및 gcexcel-extension-5.2.0.jar을 프로젝트에 포함해서는 안 됩니다.

릴리스


자세한 정보는 다음 리소스를 확인하십시오.

.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모

새로운 Excel 함수

LET 함수

스프레드시트에서 여러 수식을 사용할 수 있으며 이는 복잡할 수 있습니다. LET 함수는 사용자 친화적인 이름을 범위/셀 또는 계산에 적용하며 수식 계산 성능을 개선하도록 도와줍니다. 동일한 계산을 반복해서 하는 길이가 긴 수식은 한 번만 계산할 수 있으며 결과는 이해하기 쉬운 이름으로 저장할 수 있습니다. 이 이름은 LET 함수 내에서 추가로 사용할 수 있으며 결과는 나중에 다시 사용할 수 있는 반면 계산은 한 번만 할 수 있습니다. 더 이상 참조의 기본 로직을 기억할 필요가 없습니다. GcExcel은 지원되는 함수 목록에 이 LET 함수를 추가합니다. 여러 시트가 반복적으로 계산을 반복하는 경우 LET 함수를 사용하도록 이러한 수식을 업데이트할 수 있습니다. 스프레드시트에 대한 이러한 개선 사항의 예제는 아래에 제공되어 있습니다.

릴리스

위의 예제에서 LET 함수는 LET 함수를 사용하고 VLOOKUP의 출력을 '이름' 및 '포인트' 변수로 정의하고 수식에서 이를 다시 사용하여 VLOOKUP이 계산되는 횟수를 4배에서 2배로 줄입니다.

다음 코드는 코드에서 함수를 설정하는 방법에 대해 보여줍니다.

ws.Range["$F$9"].Formula2 = "=LET(name,VLOOKUP($G$5,$B$5:$D$16,2,0),points,VLOOKUP($G$5,$B$5:$D$16,3,0),"Ho, "&name&", you have "&points&" points. "IF(points>300, "Great job, "&name&"!",""))

자세한 정보는 다음 리소스를 확인하십시오.

.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모

GetPivotData 수식에서 유출된 데이터 지원

최근 릴리스에서 GcExcel은 다양한 워크시트에 대해 GETPIVOTDATA 함수를 생성하기 위한 GETPIVOTDATA(…) 함수와 새로운 IRange.GenerateGetPivotDataFunction(IRange destination = null) 메서드를 도입했습니다.

v5.2에서는 동적 배열 수식과 유사한 유출된 데이터를 지원하도록 이 함수의 기능을 확장합니다. 구문은 이제 참조는 물론 배열 항목 모두를 지원합니다 - "=GETPIVOTDATA(datafield, pivottable, [field1, item1, field2, item2], …)". 따라서 아래 예제에서 GcExcel을 사용하여 셀 중 하나에 설정된 GETPIVOTDATA 함수는 배열 {'New York', 'Boston'}에서 두 개의 도시를 한 데 묶어 함수의 이전 구현과 비교하여 피벗 테이블에서 데이터를 찾습니다.

릴리스


.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모

InvalidFormulaException에서 추가 세부 정보로 더 나은 디버그

고객에게 더 많은 정보를 제공하여 스프레드시트의 오류를 해결하기 위해 GcExcel은 추가 정보를 InvalidFormulaException에 추가합니다. 이제 예외 사항에는 오류를 추적하기 위한 셀의 위치 및 수식 텍스트가 포함됩니다. 따라서 이 예외 사항이 발생하면 스프레드시트에서 문제를 해결하기 위한 추가 정보를 보유하게 됩니다.

SpreadJS 통합을 위한 기능

CASCADESPARKLINE 수식 지원

이제 GcExcel을 사용하여 CASCADESPARKLINE 수식을 프로그래밍 방식으로 스프레드시트에 추가할 수 있습니다. 계단식 스파크라인은 SpreadJS의 기능입니다. GcExcel에서는 계단식 수식이 이제 SSJSON I/O에서 지원됩니다. 스프레드시트에 수식을 추가하고 스프레드시트를 PDF/HTML/이미지로 내보낼 수도 있습니다. 계단식 스파크라인은 일반적으로 연간 판매, 총 수익, 순 세금 등과 같이 시간이 지남에 따른 값을 분석하는 데 사용됩니다. 몇 가지를 예로 들자면 금융, 판매, 법률 및 건설 부문에서 널리 사용됩니다.

수식의 구문은 다음과 같습니다 - '=CASCADESPARKLINE(pointsRange, pointIndex, labelsRange, minimum, maximum, colorPositive, colorNegative, vertical, itemTypeRange, colorTotal)'

아래 코드는 '세로' 속성을 False로 설정하여 세로 막대로 계단식 스파크라인 수식을 추가합니다.

// Add a cascade sparkline with Horizontal Bars.
for (int i = 1; i < 8; i++)
{
    worksheet.Range[i, 2].Formula = "'=CASCADESPARKLINE(D5:D20, SEQUENCE(COUNTA(D5:D20),1,1,1),P5:P20,,,"#8CBF64","#D6604D",false,A5:A20)')";
}

릴리스


.NET 도움말 | Java 도움말 | .NET 데모 | Java 데모




지금 바로 GcExcel Java를 다운로드하여 직접 테스트해보세요!

gcexcel-java.png

 
  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
  • 카카오톡으로 보내기
그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

인기글

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