2009-09-10 7 views
0

내 응용 프로그램이 해결하고자하는 문제의 서식 템플릿을 사용하는 것은 이것이다 : .NET 구성 요소 엑셀 2003 스프레드 시트 생성이

는 현재 여러 저장 프로 시저를 실행, 데이터가 수동으로 SQL 결과에서 복사

빈 스프레드 시트 및보고 분석가가 데이터 형식을 지정합니다. 이 과정은 너무 길고 비용이 많이 드는 것으로 간주되었습니다.

내 생각에 이상적인 솔루션은 저장 프로 시저 결과를 가져 와서 워크 시트 템플릿 (템플릿 서식 유지)의 특정 셀 범위에 쓸 수있는 구성 요소가있는 .NET 응용 프로그램입니다. 그런 다음 콜레이트 할 수 있습니다. 결과를 .NET 응용 프로그램의 통합 문서로 가져옵니다.

거기에 그런 응용 프로그램이 있습니까? 더 나은 솔루션을 가진 사람이 있습니까?

감사합니다.

답변

1

은 템플릿 형식을 유지해야

public void SetWorksheetData(long rowCount, long columnCount, object[,] excelSpreadsheetData, int startingRow, int startingCol, Worksheet worksheet) 
     { 
      if (rowCount == 0 || columnCount == 0) return; 
      //set the region data. 
      object m_objOpt = Missing.Value; 
      Range cellRange = worksheet.get_Range(ExcelGeneratorUtils.ExcelColumnFromNumber(startingCol) + startingRow, m_objOpt); 
      cellRange = cellRange.get_Resize(rowCount, columnCount); 
      cellRange.set_Value(m_objOpt, excelSpreadsheetData); 
     } 

이 설정하여 데이터를 적용

object[,] excelSpreadsheetData 

의 형태로 데이터를 얻고, 셀별로 셀을 설정하는 것보다 훨씬 빠르게 한 번에 데이터를 설정합니다.

도움이 되길 바랍니다.

+0

숫자 변환에서 열을 수행하기 위해 ExcelGeneratorUtils에 액세스 할 수있는 곳은 어디입니까? –

+0

이것은 사용자 지정 함수입니다. 조금 나중에 K X-) 예를 들어 줄 수있을 것입니다. –

+0

이봐, 내 오래된 게시물을 발견했다. 여기에서 변환 함수를 찾을 수있다. http://stackoverflow.com/questions/837155/fastest-function-to -generate-excel-column-letters-in-c –

0

this question 나는 비슷한 것을 요구했다. 차이점은 Excel에서 스프레드 시트로 해석하는 XML 파일을 생성하기를 원합니다. 데이터를 XML 파일로 전송 한 다음 XML을 SpreadsheetML로 변환하면 문제가 해결 될 수 있습니다. 하지만 SpreadsheetXM에는 몇 가지 제한 사항이 있습니다. Excel을 설치하지 않아도되며 변환 작업이 신속하게 이루어질 수 있습니다. 그리고 Excel 2007을 사용하는 경우 사용할 수있는 두 번째 XML 형식 인 Microsoft Office XML 형식이 있습니다. 기본적으로 현재 코드가 COM을 통해 Excel과 상호 작용하고 있다고 생각하기 때문에 속도가 느립니다. 나는 데이터

을 설정하는 데 사용할 무엇

+0

아 쓰레기, 난 내가이의 가장 큰 문제는 솔루션이 보이지 않는다는 것입니다 생각 Excel로 2003 년 업데이트 질문 ... –

+0

을 제한하고있어 언급하는 것을 잊었다 내가 서식을 유지할 수있게하려면 - 서식있는 서식을 SpreadsheetML 문서에 적용 할 수있는 방법이 있습니까? –

+0

SpreadsheetML에서는 간단한 서식을 사용할 수 있지만 원하는 서식의 일부는 허용하지 않습니다. 스프레드 시트를 작성한 다음 SpreadsheetML XML 파일로 내보내는 것이 가장 좋은 방법입니다. (파일/다른 이름으로 저장/XML 스프레드 시트.)이 XML 스프레드 시트를 다시 열고 서식의 남은 부분을 확인하십시오. 그래도 괜찮 으면 XML을 스프레드 시트로 변환하는 스타일 시트의 기초로이 XML을 사용하십시오 ... –

1

interop을 통해 언제든지 Excel 자동화를 사용할 수 있습니다. 원하는 출력이 Excel 인 경우에이 작업을 수행했습니다. 놀랍게도 빠르면, 자신을 정리하고 Excel 인스턴스를 실행 상태로 두지 말고 조심해야합니다. 다음은 간단한 샘플입니다.

 using Excel = Microsoft.Office.Interop.Excel; 

     Excel.ApplicationClass _Excel; 
     Excel.Workbook WB; 
     Excel.Worksheet WS; 


     _Excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); 
     WB = _Excel.Workbooks.Add(System.Reflection.Missing.Value); 

     WS = (Excel.Worksheet)WB.Worksheets[1]; 
     WS.Name = "Test"; 

     try 
     { 

      int row; 
      int col; 

      WS.Cells[++row, col] = "COL1"; 
      WS.Cells[row, ++col] = "COL2"; 

      WS.get_Range("A1", "A2").Font.Bold = true; 
      WS.get_Range("A1", "A2").HorizontalAlignment      =Excel.XlHAlign.xlHAlignCenter; 

      WS.Cells[++row, col] = "Customer"; 
      WS.Cells[++row, col] = "Expenses" 

      WS.get_Range("A1", "B1").Font.Bold = true; 


      WS.Columns.AutoFit(); 
      WS.Rows.AutoFit(); 

      WS.Activate(); 
      _Excel.Visible = true; 
     } 
     catch (Exception ex) 
     { 
      WB.Close(false, Type.Missing, Type.Missing); 
      _Excel.Quit(); 
      throw; 
     } 
     finally 
     { 
      GC.Collect(); 
      GC.WaitForPendingFinalizers(); 



      System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WS); 


      System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WB); 

      System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_Excel); 


     } 
1

SpreadsheetGear for .NET, 당신은 Excel 통합 문서를 열 수 있도록 값을 연결하고 통합 문서를 저장합니다.

Excel보고 (예 : Excel로 내보내기) 샘플 here을 확인하고 무료 시험판 here을 다운로드 할 수 있습니다.

면책 조항 : 나는하는 SpreadsheetGear LLC 소유