2013-06-10 2 views
0

내 Excel에서 원하는 형식을 더 잘 이해할 수 있도록 아래 그림을 첨부했습니다. ASP.NET을 사용하여 형식을 변환하는 방법을 전혀 알지 못합니다. 제발 날 안내 해줘. 미리 감사드립니다. 데이터 세트 &의 데이터 테이블의 형식 위에 가져다ASP.NET Excel 서식 지정 및 내보내기

enter image description here

답변

0

시도는 단지 기능을 다음에 그 데이터 테이블을 전달합니다.

string path = Context.Server.MapPath("~/ExcelData/test.xslx"); 
ExportDataSet(ds, path); 

개인 무효 ExportDataSet (데이터 세트 (DS), 대상 문자열) { 사용 (VAR 통합 문서 = SpreadsheetDocument.Create (목적지 DocumentFormat.OpenXml.SpreadsheetDocumentType.Workbook)) { VAR workbookPart = workbook.AddWorkbookPart (); 이 링크에 볼 수 있도록 붙여 넣은 코드로 죄송합니다

using DocumentFormat.OpenXml.Packaging; 
using DocumentFormat.OpenXml.Spreadsheet; 
using DocumentFormat.OpenXml; 
+0

workbook.WorkbookPart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook(); workbook.WorkbookPart.Workbook.Sheets = new DocumentFormat.OpenXml.Spreadsheet.Sheets(); foreach (System.Data.DataTable table in ds.Tables) { var sheetPart = workbook.WorkbookPart.AddNewPart<WorksheetPart>(); var sheetData = new DocumentFormat.OpenXml.Spreadsheet.SheetData(); sheetPart.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(sheetData); DocumentFormat.OpenXml.Spreadsheet.Sheets sheets = workbook.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>(); string relationshipId = workbook.WorkbookPart.GetIdOfPart(sheetPart); uint sheetId = 1; if (sheets.Elements<DocumentFormat.OpenXml.Spreadsheet.Sheet>().Count() > 0) { sheetId = sheets.Elements<DocumentFormat.OpenXml.Spreadsheet.Sheet>().Select(s => s.SheetId.Value).Max() + 1; } DocumentFormat.OpenXml.Spreadsheet.Sheet sheet = new DocumentFormat.OpenXml.Spreadsheet.Sheet() { Id = relationshipId, SheetId = sheetId, Name = table.TableName }; sheets.Append(sheet); DocumentFormat.OpenXml.Spreadsheet.Row headerRow = new DocumentFormat.OpenXml.Spreadsheet.Row(); List<String> columns = new List<string>(); foreach (System.Data.DataColumn column in table.Columns) { columns.Add(column.ColumnName); DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell(); cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String; cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(column.ColumnName); headerRow.AppendChild(cell); } sheetData.AppendChild(headerRow); foreach (System.Data.DataRow dsrow in table.Rows) { DocumentFormat.OpenXml.Spreadsheet.Row newRow = new DocumentFormat.OpenXml.Spreadsheet.Row(); foreach (String col in columns) { DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell(); cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String; cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(dsrow[col].ToString()); // newRow.AppendChild(cell); } sheetData.AppendChild(newRow); } } } 

는}, 좋은 형식이 아닙니다. http://stackoverflow.com/questions/15826614/how-to-write-data-on-new-sheet-of-excel –

+0

내가 버튼에 있기를 원할 경우 말하십시오. 정확한 코드는 무엇입니까? 완벽한 코드를 알려주시겠습니까? 정말 고맙습니다! –

+0

버튼을 클릭하면 위의 함수에 전달할 수 있도록 Stored procedure by Dataset에 데이터를 가져와야합니다. 그것은 모든 것을 할 것이고 지정된 경로에서 파일을 만들 것입니다. openXML SDK (2.0)를 다운로드하고 프로젝트 및 페이지에 대한 참조를 추가하십시오. –