2014-05-21 3 views
0

에 TABLESTYLE을 적용합니다. 하지만 ListSource에 액세스하여 TableStyle을 적용하면 예외가 발생합니다. 난 그냥 이후에 열을 포맷 할 수내가 쿼리 테이블을 사용할 수있는 쿼리 테이블

진수가 아닌 날짜로 조회 화면에서

var sheet = (_excel.ActiveSheet as Excel.Worksheet); 

var qt = sheet.ListObjects.Add(
    Excel.Enums.XlListObjectSourceType.xlSrcQuery, 
    "ODBC;...", 
    null, 
    Excel.Enums.XlYesNoGuess.xlNo, 
    rng, 
    "TableStyleMedium9").QueryTable; 

qt.CommandType = Excel.Enums.XlCmdType.xlCmdSql; 
qt.CommandText = "SELECT * FROM myTable"; 
qt.Refresh(); 

다음은 날짜 ...하지만 :

지금은 같은 목록 개체를 추가하면

문제는 런타임에 사용자가 입력 할 때 실행되는 쿼리를 실제로 알지 못하기 때문에 Excel에서이 작업을 수행하는 것이 좋습니다.

본질적으로 내가 원했던 것은 코드의 첫 번째 비트를 사용하고 TableStyle을 적용하는 것입니다.

아무도 도와 줄 수 있습니까?

답변

-1

이것은 색칠을하지 않지만 데이터 테이블로 데이터를 구성하며, 중단 점을 사용하여 디버깅하고 데이터 테이블 위에 마우스를 놓으면 열로 구성된 모든 데이터를 볼 수 있습니다. 그런 다음 데이터 테이블을 사용하여 수행 할 수있는 작업은 win forms 요소의 DataGrid 뷰에 바인딩하는 것입니다.

나는이 DataTable DataTable = new DataTable();을 맨 위에있는 전역 입력란으로 사용하고 있습니다.

 OleDbConnection conn = new OleDbConnection(); 

     //This is making a connection to the excel file, don't worry about this I think you did it differently. 
     conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + stringFileName + ";" + "Extended Properties=\"Excel 12.0;HDR=Yes;\"";    OleDbCommand cmd = new OleDbCommand 
     ("SELECT * FROM [" + sheetFromTo + "]", conn); 

     DataSet dataSet1 = new DataSet(); 
     OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmd); 

     try 
     { 
      conn.Open();//opens connection 
       dataSet1.Clear();//empties, incase they refill it later 
       dataAdapter.SelectCommand = cmd;//calls the cmd up above 
       dataAdapter.Fill(dataSet1);//fills the dataset 
       dataGridView1.DataSource = dataSet1.Tables[0];//puts the dataset in the dataGridview 
       //important** creates a datatable from the dataset, most of our work with the server is with this datatable 
       DataTable dataTable = dataSet1.Tables[0]; 
       DataTable = dataTable; 
     } 
     catch (Exception ex) 
     { 
     } 
     finally 
     { 
      conn.Close(); 
     } 
+1

예에서 명확하지 않은 경우 죄송합니다. Excel로 작업하고 있습니다. – Cheetah

+0

Excel에서 수행하고자하는 작업을 조금 더 설명 할 수 있습니까? – Benny

+0

Excel 2010 (가능 2007 년 가능)에서는 쿼리 테이블을 사용하여 데이터를 가져올 수 있으며 헤더와 일부 색상을 제공하도록 테이블을 자동으로 포맷합니다. – Cheetah