! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

C# .NET 및 Java에서 GcExcel Spreadsheet API를 사용하는 팁과 요령 > 온라인 스터디

본문 바로가기

C# .NET 및 Java에서 GcExcel Spreadsheet API를 사용하는 팁과 요령

페이지 정보

작성자 GrapeCity 작성일 2022-07-29 14:47 조회 370회 댓글 0건

본문

웹에 있는 대부분의 데이터는 행과 열로 배열되어 있으며 Excel 스프레드시트는 데이터 저장, 분석, 계산, 정렬 및 배열에 가장 흔히 사용되는 친숙한 방법입니다. 예산, 거래, 재무 보고서수익 분석 등을 빠른 속도로 처리할 수 있는 솔루션을 찾고 있다면 기본적인 웹 앱보다 강력한 기능이 필요할 것입니다. GcExcel(.NET & Java)은 시스템에 미치는 부담이 적고 속도가 빠른 API로, 대부분의 Excel 기능을 지원하며 Windows, Mac, Linux, 클라우드에서 솔루션을 배포할 수 있습니다.

이 문서에서는 Excel 스프레드시트를 사용하여 프로그래밍 방식으로 작업하는 경우 더욱 빠르고 효율적인 실행을 위해 GcExcel을 사용하는 몇 가지 팁과 요령을 볼 수 있습니다.


특정 범위의 데이터만 가져오기

일반적으로 Excel 파일에서 모든 데이터를 추출하지 않고 특정 데이터만 추출하는 경우가 많습니다. 따라서 Excel API에서 Excel 파일 전체를 로드하려는 경우 프로세스가 지루하고 시간이 많이 소요될 수 있습니다. GcExcel에서는 전체 객체 모델을 로드하지 않고도 Excel 파일에서 데이터만 가져오는 새로운 ImportData(..) 메서드가 추가되었습니다.

이 함수를 사용하면 여러 Excel 파일의 데이터를 보다 쉽고 효율적으로 동시에 가져올 수 있습니다. 전체 데이터를 가져올 수 있거나 워크시트에서 가져올 데이터 범위를 지정할 수도 있습니다.

// Create a new workbook
Workbook workbook = new Workbook();
InputStream fileStream = this.getResourceStream("xlsx\\AgingReport.xlsx");
// Import data of a range from the fileStream
Object[][] data = Workbook.importData(fileStream, "Aging Report", 8, 2, 21, 7);
// Assign the data to current workbook
workbook.getWorksheets().get(0).getRange(0, 0, 21, 7).setValue(data);
 
// Save to an excel file
workbook.save("ImportData.xlsx")


통합 문서에서 데이터만 가져오는 경우 ImportData(..) 메서드는 Open 메서드보다 네 배 더 빠릅니다.


워크시트 또는 표 이름을 모르는 상태에서 ImportData 메서드 사용

사용자는 특정 워크시트 이름 또는 표 이름이 아닌 가져올 통합 문서 경로만 알고 있을 수 있습니다. 이러한 상황에서는 지정된 소스에서 Workbook.ImportData(string fileName, string sourceName) 함수 가져오기 데이터를 사용할 수 있습니다.

소스는 시트 이름, 표 이름 또는 범위 이름이 될 수 있으며 인터페이스 Workbook.GetNames(string fileName)에서 가져올 수 있고 모든 워크시트, 표의 이름 및 범위 참조에 평가되는 정의된 이름을 포함하여 이름 배열을 반환합니다.

다음 예에서는 GetNames 메서드에서 소스 이름을 사용하여 Excel 파일에서 표 데이터를 가져옵니다.

//create a new workbook
var workbook = new GrapeCity.Documents.Excel.Workbook();
  
// Open an excel file.
var fileStream = GetResourceStream("xlsx\\AgingReport.xlsx");
  
// Get the possible import names in the file.
// The names[0] and names[1] are sheet names: "Aging Report", "Invoices".
// The names[2] and names[3] are table names: "'Aging Report'!tblAging", "Invoices!tblInvoices".
var names = GrapeCity.Documents.Excel.Workbook.GetNames(fileStream);
  
// Import the data of a table "'Aging Report'!tblAging" from the fileStream.
var data = GrapeCity.Documents.Excel.Workbook.ImportData(fileStream, names[2]);
  
// Assign the data to current workbook.
workbook.Worksheets[0].Range[0, 0, data.GetLength(0), data.GetLength(1)].Value = data;
          
// Save to an excel file
workbook.Save("importdatafortable.xlsx");

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


데이터 가져오기 - 대체 방식

스타일, 데이터, 도형 등과 같이 가져올 특정 데이터를 안다고 가정하며 XLSXOpenOptions.ImportFlags 열거를 Workbook.Open(..) 메서드와 함께 사용할 수 있습니다.

var workbook = new GrapeCity.Documents.Excel.Workbook();
         
//Use XlsxOpenOptions.ImportFlags to control what you want to import from excel, ImportFlags.Data means only the data will be imported
//Change the path to the real file path when open.
XlsxOpenOptions options = new XlsxOpenOptions
{
    ImportFlags = ImportFlags.Data
};
         
workbook.Open("source.xlsx", options);


조건부 서식

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


사용된 범위 가져오기

Excel 시트에서 사용된 셀을 찾고 싶을 수 있습니다. 예를 들어 사용된 범위에 있지 않은 셀 위치의 Excel 파일에서 데이터를 삽입하려고 할 수 있습니다. 이러한 경우 워크시트에서 사용된 범위를 반환할 수 있는 API가 있는 것이 유용합니다. GcExcel을 통해 worksheet.GetUsedRange(..) 메서드를 사용하고 UsedRangeType 열거별로 Data, DataValidation, Hyperlink, Sparkline 등과 같은 특정 데이터를 가져올 수 있습니다.

worksheet.Range["A2:C3"].Interior.Color = Color.Green;
 
//style used range is A2:C3.
var UsedRange_style = worksheet.GetUsedRange(UsedRangeType.Style);
UsedRange_style.Interior.Color = Color.LightBlue;

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


셀의 주소를 가져오기 위해 범위 주소 가져오기

일반적으로 셀의 주소를 가져오려면 코드를 작성해야 합니다. 예를 들어 다음과 같습니다.

worksheet.Cells[2, 3].ToString().Substring(7, 4);


하지만 GcExcel에는 셀의 주소에 액세스할 수 있는 직접적인 메서드가 있습니다. 절대 A1 형식으로 범위 참조를 표시하는 문자열 값을 얻으려면 IRange.Address 속성을 사용합니다. 행 또는 열에 대한 절대 또는 상대 참조를 선택하거나 참조 스타일을 A1 또는 R1C1로 표시하는 IRange.GetAddress 메서드를 통해 매개 변수를 제공하는 옵션도 있습니다. row/col 2,2에 상대적인 셀 주소를 가져오는 다음 코드를 확인하십시오.

//create a new workbook 
var workbook = new GrapeCity.Documents.Excel.Workbook();   
 
var mc = workbook.Worksheets['Sheet1'].Cells[0, 0];
Console.WriteLine(mc.Address); // $A$1
Console.WriteLine(mc.GetAddress(rowAbsolute: false)); // $A1
Console.WriteLine(mc.GetAddress(referenceStyle: ReferenceStyle.R1C1)); // R1C1
Console.WriteLine(mc.GetAddress(referenceStyle: ReferenceStyle.R1C1, 
    rowAbsolute: false,
    columnAbsolute: false, 
    relativeTo: workbook.Worksheets[0].Cells[2, 2])); // R[-2]C[-2]


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


값을 설정할 때 계산 엔진 성능 향상

GcExcel에서는 Workbook.DeferUpdateDirtyState 부울 속성을 제공합니다. 셀 값을 변경하고 Workbook.DeferUpdateDirtyState =True를 설정하면 GcExcel에서 수식 셀 수정 상태를 즉시 업데이트하지 않습니다. 따라서 Excel 파일에서 값을 설정할 때 계산 엔진의 성능이 개선됩니다.

.NET 도움말 | Java 도움말


표시 형식 가져오기

IRange.DisplayFormat 속성을 사용하여 셀의 표시 스타일을 가져올 수 있습니다. 셀의 표시 스타일은 셀이 표에 있으면 스타일 또는 표 스타일에서 생길 수 있으며 셀이 조건과 일치하면 조건부 서식에서 생길 수 있습니다. 현재 사용자 인터페이스에 표시되므로 값을 반환하려면 DisplayFormat 객체의 속성을 사용합니다. 다음 코드는 셀을 비워둘 수 없는 조건부 서식 조건으로 DisplayFormat.Interior.Color를 A1 셀로 설정합니다.

//create a new workbook
var workbook = new GrapeCity.Documents.Excel.Workbook();
 
IWorksheet worksheet = workbook.Worksheets[0];
 
//Range A1's displaying color is table style
worksheet.Tables.Add(worksheet.Range["A1:E5"], true);
var color_A1 = worksheet.Range["A1"].DisplayFormat.Interior.Color;
 
//Range A1's displaying color will be cell style, yellow.
worksheet.Range["A1"].Interior.Color = Color.Yellow;
var color_A1_1 = worksheet.Range["A1"].DisplayFormat.Interior.Color;
 
//Range A1's displaying color will be conditional format style, green.
IFormatCondition condition = worksheet.Range["A1"].FormatConditions.Add(FormatConditionType.NoBlanksCondition) as IFormatCondition;
condition.Interior.Color = Color.Green;
var color_A1_2 = worksheet.Range["A1"].DisplayFormat.Interior.Color;
         
// Save to an excel file
workbook.Save("getdisplayformat.xlsx");

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


특수 셀 가져오기

특수 셀 범위는 특정 데이터 유형 또는 값을 포함하는 범위를 참조합니다. 이는 주석, 텍스트 값, 수식, 공백, 상수, 숫자 등을 포함하는 셀이 될 수 있습니다. GcExcel에서 가장 유익한 메서드 중 하나는 IRange.SpecialCells 메서드입니다. 사용하는 경우 지정한 이러한 유형의 셀만 표시하는 범위를 반환합니다. 예를 들면, SpecialCells 메서드를 사용하여 수식만 포함하는 범위를 반환할 수 있습니다.

GcExcel을 통해 IRange 인터페이스의 SpecialCells 메서드를 사용하여 특수 셀 범위를 가져올 수 있습니다. 매개 변수로 다음 열거를 채택합니다.

코드에 따라 수식 및 상수가 있는 모든 특수 셀을 찾고 이러한 셀에서 배경색을 설정합니다.

//create a new workbook
var workbook = new GrapeCity.Documents.Excel.Workbook();
 
using (var existingFile = GetResourceStream("xlsx\\FinancialReport.xlsx"))
{
    workbook.Open(existingFile);
}
 
IRange cells = workbook.ActiveSheet.Cells;
 
// Find all formulas
var allFormulas = cells.SpecialCells(SpecialCellType.Formulas);
// Find all constants
var allConstants = cells.SpecialCells(SpecialCellType.Constants);
 
// Change background color of found cells
allFormulas.Interior.Color = Color.LightGray;
allConstants.Interior.Color = Color.LightBlue;
         
// Save to an excel file
workbook.Save("specialcellsinexistingfiles.xlsx");

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


숨겨진 행을 새 범위에 복사

숨겨진 특정 행을 원할 수 있습니다. 하지만 행을 다른 범위에 복사하면 이러한 숨겨진 행/열도 복사해야 합니다. GcExcel은 새 API IRange.Copy(IRange destination, PasteOption pasteOption)를 추가하여 숨겨진 행/열을 복사합니다. API에는 숨겨진 행/열의 데이터를 복사할지 여부를 제어할 추가 속성 AllowPasteHiddenRange가 포함됩니다.

추가 세부 정보 확인: .NET 도움말 | Java 도움말 | .NET 데모 | Java 데모


참조되는 셀 및 참조하는 셀 모두 가져오기

Excel 스프레드시트에는 여러 수식이 포함되는 경우가 있습니다. 오류를 발생시키는 셀 또는 범위에 대한 계산 오류의 원인을 찾고 있는 경우 셀 간의 관계를 이해하는 것은 어려운 작업이 될 수 있습니다. 예를 들어 Excel 스프레드시트의 수식은 잘못된 값을 반환하거나 올바른 값을 가져오기 위해 수정해야 할 오류 메시지를 제공할 수도 있습니다. GcExcel을 사용하면 다른 셀에서 수식에서 직접 또는 간접으로 참조된 셀이나 범위를 반환하여 사용하기 쉬운 GetPrecedents 메서드를 제공함으로써 계산 오류를 프로그래밍 방식으로 감사하기가 더 쉬워집니다.

또한 셀 값이 수정되거나 계산이 수행되는 경우 영향을 받는 셀은 GetDependents() 메서드에서 반환할 수 있습니다. 이 메서드는 다른 셀을 직접 또는 간접으로 참조하는 수식을 포함한 셀이나 범위를 반환합니다.

다음 코드는 E2에 적용된 수식의 참조되는 셀을 계산합니다.

//create a new workbook
var workbook = new GrapeCity.Documents.Excel.Workbook();
 
IWorksheet worksheet = workbook.Worksheets[0];
worksheet.Range["E2"].Formula = "=sum(A1:A2, B4,C1:C3)";
worksheet.Range["A1"].Value = 1;
worksheet.Range["A2"].Value = 2;
worksheet.Range["B4"].Value = 3;
worksheet.Range["C1"].Value = 4;
worksheet.Range["C2"].Value = 5;
worksheet.Range["C3"].Value = 6;
 
foreach (var item in worksheet.Range["E2"].GetPrecedents())
{
    item.Interior.Color = Color.Pink;
}
         
// Save to an excel file
workbook.Save("precedents.xlsx");

다음 코드는 수식으로 A1 셀을 참조하는 모든 직접 또는 간접 셀을 강조 표시합니다.

//create a new workbook
var workbook = new GrapeCity.Documents.Excel.Workbook();
 
IWorksheet worksheet = workbook.Worksheets[0];
worksheet.Range["A1"].Value = 100;
worksheet.Range["C1"].Formula = "=$A$1";
worksheet.Range["E1:E5"].Formula = "=$A$1";
foreach (var item in worksheet.Range["A1"].GetDependents())
{
    item.Interior.Color = Color.Azure;
}
         
// Save to an excel file
workbook.Save("dependents.xlsx");

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


피벗 테이블에서 레이아웃 업데이트 지연

피벗 표 데이터 필드가 추가, 제거 또는 다른 위치로 이동할 때마다 전체 피벗 표가 다시 계산됩니다. 이 작업은 Excel 스프레드시트 생성의 전체 성능에 영향을 줍니다.

GcExcel은 DeferLayoutUpdate 속성을 추가합니다. 사용자가 업데이트 메서드를 호출하고 표를 업데이트할 때까지 피벗 표에 대한 업데이트를 지연합니다. 이 속성은 피벗 표를 포함한 Excel 스프레드시트의 생성을 더 자연스럽고 더 깔끔하게 만듭니다.

IWorksheet worksheet = workbook.Worksheets[0];
worksheet.Range["A1:F16"].Value = sourceData;
worksheet.Range["A:F"].ColumnWidth = 15; 
var pivotcache = workbook.PivotCaches.Create(worksheet.Range["A1:F16"]); 
var pivottable = worksheet.PivotTables.Add(pivotcache, worksheet.Range["H7"], "pivottable1");   
 
// defer layout update
pivottable.DeferLayoutUpdate = true;   
 
//config pivot table's fields 
var field_Category = pivottable.PivotFields["Category"];
field_Category.Orientation = PivotFieldOrientation.RowField;   
 
var field_Product = pivottable.PivotFields["Product"];
field_Product.Orientation = PivotFieldOrientation.ColumnField;   
 
var field_Amount = pivottable.PivotFields["Amount"];
pivottable.AddDataField(field_Amount, "sum amount", ConsolidationFunction.Sum);   
 
// must update the
pivottable.pivottable.Update();   
 
//save to an excel file
workbook.Save("PivotTable.xlsx");

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


행 및 열 그룹화 정보 가져오기

Excel에 길이가 긴 보고서가 있는 경우 더 관리하기 쉽게 만들고 싶을 수 있습니다. 워크시트에서 그룹을 확장하거나 축소하여 필요한 대로 특정 정보를 숨기거나 상세한 행/열만 보려고 할 수 있습니다. 하지만 Excel 워크시트에서 그룹화된 행이나 열을 프로그래밍 방식으로 가져온다고 가정해 보겠습니다. 이런 경우 워크시트를 열고 수동으로 하는 것보다 그룹을 쉽게 확장/축소하도록 지원할 수 있습니다. GcExcel API를 확인하여 List RowGroupInfoList ColumnGroupInfo 목록 유형을 통해 행 및 열 그룹화 정보를 가져오십시오. 이 API의 도움으로 다음 기능을 달성할 수 있습니다.

  • 현재 그룹의 시작 인덱스 가져오기

  • 그룹의 최종 인덱스 가져오기

  • 현재 그룹의 수준 가져오기

  • 그룹을 축소할지 여부 확인

  • 그룹의 상위 행/열 가져오기

  • 그룹의 하위 행/열 가져오기

마지막으로 Expand() 또는 Collapse() 메서드는 행 또는 열을 확장하거나 축소하도록 도울 수 있습니다.

팁

추가 세부 정보 확인: .NET 도움말 | Java 도움말 | .NET 데모 | Java 데모


내보낸 JSON 파일의 크기 제어

JSON에 내보낸 경우 크기가 큰 파일을 제작하는 특정 Excel 파일이 있습니다. GcExcel을 사용하면 새 SerializationOptions.IgnoreColumnRowInfoOutOfUsedRange 옵션을 통해 내보낸 JSON 파일의 크기를 제어할 수 있습니다. 이 옵션을 통해 사용된 범위에서 열 행 정보를 내보낼지 여부를 제어할 수 있으며 이는 내보낸 JSON 파일의 크기를 줄이는 데 도움이 됩니다. 이 기능은 GcExcel이 클라이언트 측 SpreadJS 제품과 서버 측 API로 통합되는 경우에만 지원됩니다.

추가 세부 정보 확인: .NET 도움말 | Java 도움말




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

 


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

 
  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.