C\#Excel 내 보 내기 6 가지 간단 한 방법 실현

17202 단어 C#도 출Excel
작성 자|Johnson Manohar
번역자|담 명랑,책임 편집|황 호 연
출품|CSDN(ID:CSDN news)
Syncfusion Excel(XlsIO)라 이브 러 리 는.Net Excel 라 이브 러 리 로 사용자 가 C\#와 VB.NET 로 각종 데이터 원본(예 를 들 어 데이터 시트,배열,대상 집합,데이터 베이스,CSV/TSV,마이크로소프트 그리드 컨트롤 등)데 이 터 를 Excel 로 내 보 낼 수 있 도록 지원 합 니 다.
Excel 로 데 이 터 를 내 보 내 면 더 쉽게 이해 할 수 있 는 방식 으로 데 이 터 를 시각 화 할 수 있 습 니 다.이 특성 은 재무 보고,은행 보고서 와 영수증 을 생 성 하 는 데 도움 이 되 며 빅 데이터 선별,데이터 검증,포맷 데이터 등 도 지원 한다.
Excel 로 데 이 터 를 내 보 냅 니 다.Essential XlsIO 는 다음 과 같은 방법 을 제공 합 니 다.
데이터 시트 를 Excel 로 내 보 냅 니 다
  • 대상 집합 은 Excel 로 내 보 냅 니 다
  • 데이터 베 이 스 를 Excel 로 내 보 냅 니 다
  • 마이크로소프트 격자 컨트롤 을 Excel 로 내 보 냅 니 다
  • 배열 을 Excel 로 내 보 냅 니 다
  • CSV 를 Excel 로 내 보 냅 니 다본 논문 에서 우 리 는 이런 방법 과 그것 을 어떻게 집행 하 는 지 연구 할 것 이다.
    데이터 시트 를 Excel 로 내 보 내기
    ADO.NET 대상 의 데이터(예 를 들 어 datatable,datacolumn,dataview)는 Excel 시트 로 내 보 낼 수 있 습 니 다.열 형식 이나 셀 값 형식,하이퍼링크,대형 데이터 세트 를 식별 하여 몇 초 안에 내 보 내 고 열 헤더 로 사용 할 수 있 습 니 다.
    데이터 시트 를 Excel 시트 로 내 보 내 면 ImportDataTable 방법 으로 이 루어 집 니 다.다음 코드 예제 에 서 는 직원 들 의 상세 한 정 보 를 엑셀 시트 로 내 보 내 는 방법 을 보 여 줍 니 다.
    
    using (ExcelEngine excelEngine = new ExcelEngine())
    {
      IApplication application = excelEngine.Excel;
      application.DefaultVersion = ExcelVersion.Excel2016;
    
      //Create a new workbook
      IWorkbook workbook = application.Workbooks.Create(1);
      IWorksheet sheet = workbook.Worksheets[0];
    
      //Create a dataset from XML file
      DataSet customersDataSet = new DataSet();
      customersDataSet.ReadXml(Path.GetFullPath(@"../../Data/Employees.xml"));
    
      //Create datatable from the dataset
      DataTable dataTable = new DataTable();
      dataTable = customersDataSet.Tables[0];
    
      //Import data from the data table with column header, at first row and first column, 
      //and by its column type.
      sheet.ImportDataTable(dataTable, true, 1, 1, true);
    
      //Creating Excel table or list object and apply style to the table
      IListObject table = sheet.ListObjects.Create("Employee_PersonalDetails", sheet.UsedRange);
    
      table.BuiltInTableStyle = TableBuiltInStyles.TableStyleMedium14;
    
      //Autofit the columns
      sheet.UsedRange.AutofitColumns();
    
      //Save the file in the given path
      Stream excelStream = File.Create(Path.GetFullPath(@"Output.xlsx"));
      workbook.SaveAs(excelStream);
      excelStream.Dispose();
    }
    
    

    데이터 시트 를 Excel 로 출력 합 니 다.
    Excel 로 빅 데 이 터 를 내 보 낼 때 디지털 형식 과 스타일 이 필요 하지 않 으 면 이 중 importOnSave 매개 변수의 값 을 TRUE 로 설정 하고 ImportDataTable 방법 으로 다시 불 러 올 수 있 습 니 다.이 때 데 이 터 를 내 보 내 는 것 과 Excel 파일 을 저장 하 는 것 이 동시에 진 행 됩 니 다.
    이 방법 으로 고성능 빅 데 이 터 를 내 보 냅 니 다.
    
    value = instance.ImportDataTable(dataTable, firstRow, firstColumn, importOnSave);
    
    
    지정 한 범위 가 있 고 지정 한 범위 의 특정 줄 과 열 에서 지정 한 범위 로 데 이 터 를 내 보 내 려 면 아래 API 를 사용 할 수 있 습 니 다.그 중에서 rowOffset 과 columnOffset 은 지정 한 범위 의 특정 단원 에서 가 져 올 인자 입 니 다.
    
    value = instance.ImportDataTable(dataTable, namedRange, showColumnName, rowOffset, colOffset);
    
    
    대상 집합 엑셀 로 내 보 내기
    대상 집합 중의 데 이 터 를 엑셀 시트 로 내 보 내 는 것 은 흔히 볼 수 있 는 장면 이다.그러나 템 플 릿 에서 엑셀 시트 로 데 이 터 를 내 보 내야 한다 면 이 방법 은 매우 유용 할 것 이다.
    Syncfusion Excel(XlsIO)라 이브 러 리 는 대상 집합 에 있 는 데 이 터 를 Excel 시트 로 내 보 내 는 것 을 지원 합 니 다.
    우 리 는 ImportData 방법 을 통 해 대상 집합 중의 데 이 터 를 엑셀 시트 로 내 보 낼 수 있다.다음 코드 예제 에 서 는 데 이 터 를 집합 에서 엑셀 시트 로 내 보 내 는 방법 을 보 여 줍 니 다.
    
    using (ExcelEngine excelEngine = new ExcelEngine())
    {
      IApplication application = excelEngine.Excel;
      application.DefaultVersion = ExcelVersion.Excel2016;
    
      //Read the data from XML file
      StreamReader reader = new StreamReader(Path.GetFullPath(@"../../Data/Customers.xml"));
    
      //Assign the data to the customerObjects collection
      IEnumerable customerObjects = GetData (reader.ReadToEnd());  
    
      //Create a new workbook
      IWorkbook workbook = application.Workbooks.Create(1);
      IWorksheet sheet = workbook.Worksheets[0];
    
      //Import data from customerObjects collection
      sheet.ImportData(customerObjects, 5, 1, false);
    
      #region Define Styles
      IStyle pageHeader = workbook.Styles.Add("PageHeaderStyle");
      IStyle tableHeader = workbook.Styles.Add("TableHeaderStyle");
    
      pageHeader.Font.RGBColor = Color.FromArgb(0, 83, 141, 213);
      pageHeader.Font.FontName = "Calibri";
      pageHeader.Font.Size = 18;
      pageHeader.Font.Bold = true;
      pageHeader.HorizontalAlignment = ExcelHAlign.HAlignCenter;
      pageHeader.VerticalAlignment = ExcelVAlign.VAlignCenter;
    
      tableHeader.Font.Color = ExcelKnownColors.White;
      tableHeader.Font.Bold = true;
      tableHeader.Font.Size = 11;
      tableHeader.Font.FontName = "Calibri";
      tableHeader.HorizontalAlignment = ExcelHAlign.HAlignCenter;
      tableHeader.VerticalAlignment = ExcelVAlign.VAlignCenter;
      tableHeader.Color = Color.FromArgb(0, 118, 147, 60);
      tableHeader.Borders[ExcelBordersIndex.EdgeLeft].LineStyle = ExcelLineStyle.Thin;
      tableHeader.Borders[ExcelBordersIndex.EdgeRight].LineStyle = ExcelLineStyle.Thin;
      tableHeader.Borders[ExcelBordersIndex.EdgeTop].LineStyle = ExcelLineStyle.Thin;
      tableHeader.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin;
      #endregion
    
      #region Apply Styles
      //Apply style to the header
      sheet["A1"].Text = "Yearly Sales Report";
      sheet["A1"].CellStyle = pageHeader;
    
      sheet["A2"].Text = "Namewise Sales Comparison Report";
      sheet["A2"].CellStyle = pageHeader;
      sheet["A2"].CellStyle.Font.Bold = false;
      sheet["A2"].CellStyle.Font.Size = 16;
    
      sheet["A1:D1"].Merge();
      sheet["A2:D2"].Merge();
      sheet["A3:A4"].Merge();
      sheet["D3:D4"].Merge();
      sheet["B3:C3"].Merge();
    
      sheet["B3"].Text = "Sales";
      sheet["A3"].Text = "Sales Person";
      sheet["B4"].Text = "January - June";
      sheet["C4"].Text = "July - December";
      sheet["D3"].Text = "Change(%)";
      sheet["A3:D4"].CellStyle = tableHeader;
      sheet.UsedRange.AutofitColumns();
      sheet.Columns[0].ColumnWidth = 24;
      sheet.Columns[1].ColumnWidth = 21;
      sheet.Columns[2].ColumnWidth = 21;
      sheet.Columns[3].ColumnWidth = 16;
      #endregion
    
      sheet.UsedRange.AutofitColumns();
    
      //Save the file in the given path
      Stream excelStream = File.Create(Path.GetFullPath(@"Output.xlsx"));
      workbook.SaveAs(excelStream);
      excelStream.Dispose();
    }

    대상 집합 을 Excel 로 출력
    데이터베이스 엑셀 로 내 보 내기
    Excel 은 서로 다른 데이터베이스 에서 Excel 표를 만 드 는 것 을 지원 합 니 다.Excel 을 사용 하여 데이터베이스 에서 하나 이상 의 Excel 표를 만 들 려 면 하나씩 연결 을 만들어 야 합 니 다.시간 이 많이 걸 릴 것 같 습 니 다.그래서 데이터베이스 에서 엑셀 표를 빠 르 고 쉽게 만 드 는 대체 방법 을 찾 을 수 있다 면 이것 은 최선 의 방법 이 아 닙 니까?
    Syncfusion Excel(XlsIO)라 이브 러 리 는 MS SQL,MS Access,Oracle 등 데이터베이스 에서 Excel 시트 로 데 이 터 를 내 보 낼 수 있다.데이터베이스 와 엑셀 응용 프로그램 사이 에 연결 을 통 해 데이터 베 이 스 를 엑셀 표 로 내 보 낼 수 있 습 니 다.
    데이터베이스 에 비 친 엑셀 시트 의 수정 데 이 터 를 Refresh()방법 으로 업데이트 할 수 있 습 니 다.
    가장 중요 한 것 은 문 서 를 참고 하여 외부 연결 에서 표를 만 들 고 데이터 베 이 스 를 Excel 표 로 내 보 내 는 방법 을 알 수 있 습 니 다.데이터베이스 에서 Excel 표 로 데 이 터 를 내 보 내 는 방법 을 보 여 줍 니 다.
    
    using (ExcelEngine excelEngine = new ExcelEngine())
    {
      IApplication application = excelEngine.Excel;
      application.DefaultVersion = ExcelVersion.Excel2016;
    
      //Create a new workbook
      IWorkbook workbook = application.Workbooks.Create(1);
      IWorksheet sheet = workbook.Worksheets[0];
    
      if(sheet.ListObjects.Count == 0)
      {
        //Estabilishing the connection in the worksheet
        string dBPath = Path.GetFullPath(@"../../Data/EmployeeData.mdb");
        string ConnectionString = "OLEDB;Provider=Microsoft.JET.OLEDB.4.0;Password=\"\";User ID=Admin;Data Source="+ dBPath;
        string query = "SELECT EmployeeID,FirstName,LastName,Title,HireDate,Extension,ReportsTo FROM [Employees]";
        IConnection Connection = workbook.Connections.Add("Connection1", "Sample connection with MsAccess", ConnectionString, query, ExcelCommandType.Sql);
        sheet.ListObjects.AddEx(ExcelListObjectSourceType.SrcQuery, Connection, sheet.Range["A1"]);
      }
    
      //Refresh Excel table to get updated values from database
      sheet.ListObjects[0].Refresh();
    
      sheet.UsedRange.AutofitColumns();
    
      //Save the file in the given path
      Stream excelStream = File.Create(Path.GetFullPath(@"Output.xlsx"));
      workbook.SaveAs(excelStream);
      excelStream.Dispose();
    }
    
    

    데이터 베 이 스 를 엑셀 시트 로 출력 합 니 다.
    DataGrid,GridView,DataGridView 에서 Excel 로 데 이 터 를 내 보 냅 니 다.
    마이크로소프트 격자 컨트롤 에서 엑셀 시트 로 데 이 터 를 내 보 내 면 서로 다른 방식 으로 데 이 터 를 시각 화 하 는 데 도움 이 된다.Excel 시트 로 내 보 낼 수 있 도록 격자 셀 에서 데이터 와 스타일 을 옮 겨 다 니 는 데 몇 시간 이 걸 릴 수도 있 습 니 다.마이크로소프트 격자 컨트롤 에서 Excel 시트 로 데 이 터 를 내 보 내야 하 는 사람들 에 게 는 좋 은 소식 일 것 입 니 다.Syncfusion Excel 라 이브 러 리 를 사용 하여 내 보 내 는 것 이 훨씬 빠 르 기 때 문 입 니 다.
    Syncfusion Excel(XlsIO)라 이브 러 리 는 API 를 호출 하여 마이크로소프트 격자 컨트롤(예 를 들 어 DataGrid,GridView,DataGridView)의 데 이 터 를 Excel 시트 로 내 보 내 는 것 을 지원 합 니 다.또한 제목 과 스타일 로 데 이 터 를 내 보 낼 수 있 습 니 다.
    다음 코드 예제 에 서 는 DataGridView 에서 Excel 시트 로 데 이 터 를 내 보 내 는 방법 을 보 여 줍 니 다.
    
    #region Loading the data to DataGridView
    DataSet customersDataSet = new DataSet();
    
    //Read the XML file with data
    string inputXmlPath = Path.GetFullPath(@"../../Data/Employees.xml");
    customersDataSet.ReadXml(inputXmlPath);
    DataTable dataTable = new DataTable();
    
    //Copy the structure and data of the table
    dataTable = customersDataSet.Tables[1].Copy();
    
    //Removing unwanted columns
    dataTable.Columns.RemoveAt(0);
    dataTable.Columns.RemoveAt(10);
    this.dataGridView1.DataSource = dataTable;
    
    dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.White;
    dataGridView1.RowsDefaultCellStyle.BackColor = Color.LightBlue;
    dataGridView1.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("Tahoma", 9F, ((System.Drawing.FontStyle)(System.Drawing.FontStyle.Bold)));
    dataGridView1.ForeColor = Color.Black;
    dataGridView1.BorderStyle = BorderStyle.None;
    #endregion
    
    using (ExcelEngine excelEngine = new ExcelEngine())
    {
      IApplication application = excelEngine.Excel;
    
      //Create a workbook with single worksheet
      IWorkbook workbook = application.Workbooks.Create(1);
    
      IWorksheet worksheet = workbook.Worksheets[0];
    
      //Import from DataGridView to worksheet
      worksheet.ImportDataGridView(dataGridView1, 1, 1, isImportHeader: true, isImportStyle: true);
    
      worksheet.UsedRange.AutofitColumns();
      workbook.SaveAs("Output.xlsx");
    }
    
    

    Microsoft DataGridView 에서 Excel 까지
    Excel 로 배열 내 보 내기
    엑셀 시트 의 기 존 데이터 에 데이터 배열 을 삽입 하거나 수정 해 야 할 때 도 있다.이런 상황 에서 행 수 와 열 수 는 미리 알 고 있다.배열 은 고정 범위 에 있 을 때 매우 유용 하 다.
    Syncfusion Excel(XlsIO)라 이브 러 리 는 데이터 배열 을 Excel 시트 로 내 보 내 는 것 을 지원 하 며 수평 방향 과 수직 방향 으로 내 보 낼 수 있 습 니 다.2 차원 배열 도 내 보 낼 수 있다.
    1 인당 지출 을 고려 해 봅 시다.한 사람의 연간 비용 은 모두 엑셀 시트 에 열거 되 어 있다.이 장면 에서 새 줄 에 새 사용자 Paul Pogba 의 비용 을 추가 하고 추적 당 하 는 모든 12 월 비용 을 업데이트 해 야 합 니 다.

    배열 에서 이전 Excel 데 이 터 를 내 보 냅 니 다.
    ImportArray 방법 을 통 해 데이터 배열 을 엑셀 시트 로 내 보 낼 수 있 습 니 다.다음 코드 예제 에 서 는 데이터 배열 을 엑셀 시트 로 내 보 내 는 방법 을 보 여 줍 니 다.수평 방향 과 수직 방향 이 모두 이와 같 습 니 다.
    
    using (ExcelEngine excelEngine = new ExcelEngine())
    {
      IApplication application = excelEngine.Excel;
      application.DefaultVersion = ExcelVersion.Excel2016;
    
      //Reads input Excel stream as a workbook
      IWorkbook workbook = application.Workbooks.Open(File.OpenRead(Path.GetFullPath(@"../../../Expenses.xlsx")));
      IWorksheet sheet = workbook.Worksheets[0];
    
      //Preparing first array with different data types
      object[] expenseArray = new object[14]
      {"Paul Pogba", 469.00d, 263.00d, 131.00d, 139.00d, 474.00d, 253.00d, 467.00d, 142.00d, 417.00d, 324.00d, 328.00d, 497.00d, "=SUM(B11:M11)"};
    
      //Inserting a new row by formatting as a previous row.
      sheet.InsertRow(11, 1, ExcelInsertOptions.FormatAsBefore);
    
      //Import Peter's expenses and fill it horizontally
      sheet.ImportArray(expenseArray, 11, 1, false);
    
      //Preparing second array with double data type
      double[] expensesOnDec = new double[6]
      {179.00d, 298.00d, 484.00d, 145.00d, 20.00d, 497.00d};
    
      //Modify the December month's expenses and import it vertically
      sheet.ImportArray(expensesOnDec, 6, 13, true);
    
      //Save the file in the given path
      Stream excelStream = File.Create(Path.GetFullPath(@"Output.xlsx"));
      workbook.SaveAs(excelStream);
      excelStream.Dispose();
    }
    
    

    데이터 배열 을 Excel 로 출력 합 니 다.
    CSV 를 Excel 로 내 보 내기
    쉼표 구분 값(CSV)파일 은 열 수가 적 고 줄 수가 많은 표 데이터 나 경량급 보고 서 를 만 드 는 데 도움 이 된다.Excel 형식 으로 이 파일 들 을 열 면 데 이 터 를 쉽게 읽 을 수 있 습 니 다.
    Syncfusion Excel(XlsIO)라 이브 러 리 는 CSV 파일 을 몇 초 안에 열 고 저장 할 수 있 습 니 다.다음 코드 예제 에 서 는 CSV 파일 을 열 고 XLSX 파일 로 저장 하 는 방법 을 보 여 줍 니 다.가장 중요 한 것 은 데이터 가 디지털 형식의 표 에 표시 되 는 것 이다.
    
    using (ExcelEngine excelEngine = new ExcelEngine())
    {
      IApplication application = excelEngine.Excel;
      application.DefaultVersion = ExcelVersion.Excel2016;
    
      //Preserve data types as per the value
      application.PreserveCSVDataTypes = true;
    
      //Read the CSV file
      Stream csvStream = File.OpenRead(Path.GetFullPath(@"../../../TemplateSales.csv")); ;
    
      //Reads CSV stream as a workbook
      IWorkbook workbook = application.Workbooks.Open(csvStream);
      IWorksheet sheet = workbook.Worksheets[0];
    
      //Formatting the CSV data as a Table 
      IListObject table = sheet.ListObjects.Create("SalesTable", sheet.UsedRange);
      table.BuiltInTableStyle = TableBuiltInStyles.TableStyleMedium6;
      IRange location = table.Location;
      location.AutofitColumns();
    
      //Apply the proper latitude & longitude numerformat in the table
      TryAndUpdateGeoLocation(table,"Latitude");
      TryAndUpdateGeoLocation(table,"Longitude");
    
      //Apply currency numberformat in the table column 'Price'
      IRange columnRange = GetListObjectColumnRange(table,"Price");
      if(columnRange != null)
        columnRange.CellStyle.NumberFormat = "$#,##0.00";
    
      //Apply Date time numberformat in the table column 'Transaction_date'
      columnRange = GetListObjectColumnRange(table,"Transaction_date");
      if(columnRange != null)
        columnRange.CellStyle.NumberFormat = "m/d/yy h:mm AM/PM;@";
    
      //Sort the data based on 'Products'
      IDataSort sorter = table.AutoFilters.DataSorter;
      ISortField sortField = sorter. SortFields. Add(0, SortOn. Values, OrderBy. Ascending);
      sorter. Sort();
    
      //Save the file in the given path
      Stream excelStream;
      excelStream = File.Create(Path.GetFullPath(@"../../../Output.xlsx"));
      workbook.SaveAs(excelStream);
      excelStream.Dispose();
    }
    
    

    csv 파일 입력

    csv 를 엑셀 로 변환 하 는 출력
    총결산
    보다 시 피 Syncfusion Excel(XlsIO)라 이브 러 리 는 C\#데 이 터 를 Excel 로 내 보 내 는 간단 한 방법 을 제공 합 니 다.우 리 는 그것들 을 효과적으로 사용 하여 고성능 엑셀 보고 서 를 만 들 거나 빅 데 이 터 를 처리 할 수 있다.문 서 를 자세히 읽 는 데 시간 을 투자 하 는 것 을 권장 합 니 다.다른 옵션 과 특성,그리고 모든 첨부 된 코드 예 시 를 발견 할 수 있 습 니 다.이 라 이브 러 리 를 사용 하면 Excel 데 이 터 를 PDF,이미지,데이터 시트,CSV,TSV,HTML,대상 집합,ODS 파일 형식 등 으로 내 보 낼 수도 있다.
    원문:https://www.syncfusion.com/blogs/post/6-easy-ways-to-export-data-to-excel-in-c-sharp.aspx
    본 고 는 CSDN 번역 입 니 다.전재 할 때 출처 를 밝 혀 주 십시오.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기