[c#] Microsoft Office를 설치하지 않고 C #에서 Excel (.XLS 및 .XLSX) 파일을 만들려면 어떻게합니까?

코드를 실행하는 컴퓨터에 Excel을 설치하지 않고도 C #으로 Excel 스프레드 시트를 만들려면 어떻게해야합니까?



답변

ExcelLibrary라는 라이브러리를 사용할 수 있습니다. Google 코드에 게시 된 무료 오픈 소스 라이브러리입니다.

엑셀 라이브러리

이것은 위에서 언급 한 PHP ExcelWriter의 포트 인 것 같습니다. 아직 새로운 .xlsx 형식으로 쓰지는 않지만 해당 기능을 추가하기 위해 노력하고 있습니다.

매우 간단하고 작으며 사용하기 쉽습니다. 또한 DataSets와 DataTables를 사용하여 Excel 데이터로 쉽게 작업 할 수있는 DataSetHelper가 있습니다.

ExcelLibrary는 여전히 이전 Excel 형식 (.xls 파일)에서만 작동하는 것으로 보이지만 향후 2007/2010 형식에 대한 지원이 추가 될 수 있습니다.

EPPlus 는 Excel 2007/2010 형식 파일 (.xlsx 파일)에만 사용할 수 있습니다 . 둘 다 작동하는 NPOI 도 있습니다 .

주석에 명시된 바와 같이 각 라이브러리에는 몇 가지 알려진 버그가 있습니다. 시간이 지남에 따라 EPPlus가 최선의 선택 인 것 같습니다. 더 적극적으로 업데이트되고 문서화 된 것 같습니다.

또한 아래의 @ АртёмЦарионов에서 알 수 있듯이 EPPlus는 피벗 테이블을 지원하며 ExcelLibrary는 일부 지원을 제공 할 수 있습니다 ( ExcelLibrary의 피벗 테이블 문제 )

다음은 빠른 참조를위한 몇 가지 링크입니다.
ExcelLibraryGNU Lesser GPL
EPPlusGNU Lesser General Public License (LGPL)
NPOIApache License

다음은 ExcelLibrary의 예제 코드입니다.

다음은 데이터베이스에서 데이터를 가져 와서 통합 문서를 만드는 예입니다. ExcelLibrary 코드는 맨 아래에있는 한 줄입니다.

//Create the data set and table
DataSet ds = new DataSet("New_DataSet");
DataTable dt = new DataTable("New_DataTable");

//Set the locale for each
ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;

//Open a DB connection (in this example with OleDB)
OleDbConnection con = new OleDbConnection(dbConnectionString);
con.Open();

//Create a query and fill the data table with the data from the DB
string sql = "SELECT Whatever FROM MyDBTable;";
OleDbCommand cmd = new OleDbCommand(sql, con);
OleDbDataAdapter adptr = new OleDbDataAdapter();

adptr.SelectCommand = cmd;
adptr.Fill(dt);
con.Close();

//Add the table to the data set
ds.Tables.Add(dt);

//Here's the easy part. Create the Excel worksheet from the data set
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);

Excel 파일을 만드는 것은 그렇게 쉽습니다. Excel 파일을 수동으로 만들 수도 있지만 위의 기능이 정말 인상적입니다.


답변

xlsx 형식에 만족한다면 GitHub 프로젝트 인 EPPlus를 사용해보십시오 . ExcelPackage의 소스로 시작했지만 오늘은 완전히 다시 작성되었습니다. 범위, 셀 스타일, 차트, 도형, 그림, 명명 된 범위, 자동 필터 및 기타 여러 기능을 지원합니다.


답변

그리고 Microsoft Office 용 Open XML SDK 2.0을 사용하는 것은 어떻습니까?

몇 가지 장점 :

  • Office를 설치할 필요가 없습니다
  • Microsoft에서 만든 = 괜찮은 MSDN 설명서
  • 프로젝트에서 사용할 하나의 .Net dll
  • SDK에는 diff, validator 등과 같은 많은 도구가 제공됩니다.

연결:


답변

나는 다음과 같은 오픈 소스 프로젝트를 성공적으로 사용했습니다.

  • OOXML 형식 용 ExcelPackage (Office 2007)

  • .XLS 형식의 NPOI (Office 2003). NPOI 2.0 (베타)도 XLSX를 지원합니다.

내 블로그 게시물을 살펴보십시오.

C #에서 Excel 스프레드 시트 .XLS 및 .XLSX 작성

Excel 테이블 및 동적 차트가 포함 된 NPOI


답변

OLEDB를 사용하여 Excel 파일을 만들고 조작 할 수 있습니다. 이것을 확인하십시오 : OLEDB를 사용하여 Excel 읽기 및 쓰기 .

전형적인 예 :

using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\temp\\test.xls;Extended Properties='Excel 8.0;HDR=Yes'"))
{
  conn.Open();
  OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] string, [Column2] string)", conn);
  cmd.ExecuteNonQuery();
}

편집-더 많은 링크 :


답변

상용 솔루션 인 SpreadsheetGear for .NET이이 를 수행 할 것입니다.

라이브 ASP.NET (C # 및 VB) 샘플은 여기 에서보고 평가판은 여기 에서 다운로드 할 수 있습니다 .

면책 조항 : SpreadsheetGear LLC를 소유하고 있습니다


답변

내가 사용한 몇 가지 옵션 :

XLSX가 필수 인 경우 : ExcelPackage 는 좋은 시작이지만 개발자가 작업을 종료하면 종료됩니다. ExML이 거기에서 집어 들고 몇 가지 기능이 추가되었습니다. ExML 은 나쁜 옵션이 아닙니다. 저는 여전히 두 개의 프로덕션 웹 사이트에서 사용하고 있습니다.

그러나 모든 새 프로젝트 에는 Apache POI 의 .NET 포트 인 NPOI 를 사용하고 있습니다.
NPOI 2.0 (Alpha) 은 XLSX도 지원합니다.