2014-03-31 2 views
0

은 가능한 ASP.NET MVC 내가이 예 here를 살펴했다 4.Excel에서 jQGrid로 데이터를 가져올 수 있습니까?

에있는 jqGrid에 Excel 파일에서 데이터를 가져올하지만 정확히 엑셀 파일에서 데이터를 가져 오기에 대해 얘기하지 않습니다입니다. 나는 주위를 해결하려하지만 데이터가 jqGrid에 표시되지 않습니다. 내가 얻는 것은 머리글 만있는 빈 테이블입니다. 있는 jqGrid :

<table id="jQGridDemo"></table> 
<div id="jQGridDemoPager"></div> 

<script type="text/javascript"> 
jQuery("#jQGridDemo").jqGrid({ 
    url: 'TopPlayedInVenueList', 
    datatype: "json", 
    colNames: ['Id', 'First Name', 'Last Name', 'Last 4 SSN', 'Department', 
      'Age'], 
    colModel: [ 
    { name: '_id', index: '_id', width: 20, stype: 'text' }, 
    { name: 'FirstName', index: 'FirstName', width: 150 }, 
    { name: 'LastName', index: 'LastName', width: 150 }, 
     { name: 'LastSSN', index: 'LastSSN', width: 100 }, 
    { name: 'Department', index: 'Department', width: 80, align: "right" }, 
    { name: 'Age', index: 'Salary', width: 80, align: "right" } 
], 
    rowNum: 10, 
    sortname: 'id', 
    viewrecords: true, 
    sortorder: "desc", 
    caption: "List Employee Details" 
}); 
</script> 

내 컨트롤러 코드 : 어떤 도움도 큰 :)

내보기 코드 것 내가 실행하려고 한 사전에

public JsonResult TopPlayedInVenueList() 
    { 
     try 
     { 
      if (Request.IsAuthenticated == true) 
      { 
       string Path = @"C:\\1.xls"; 

       OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" + Path + "';Extended Properties=" + (char)34 + "Excel 8.0;IMEX=1;" + (char)34 + ""); 

       OleDbDataAdapter da = new OleDbDataAdapter("select * from [All$A2:Z]", con); 

       //OleDbDataAdapter da = new OleDbDataAdapter("select * from [All$]", con); 

       con.Close(); 

       System.Data.DataTable data = new System.Data.DataTable(); 

       da.Fill(data); 

       List<TopPlayedInVenue> daa = new List<TopPlayedInVenue>(); 

       foreach (DataRow p in data.Rows) 
       { 
        TopPlayedInVenue top = new TopPlayedInVenue() 
        { 
         TrackName = p.Field<string>("Track Name"), 
         ArtistName = p.Field<string>("Artist Name") 
        }; 

        daa.Add(top); 
       } 



       var newlist = daa.OrderBy(i => i.TrackName).ToList(); 

       return Json(daa); 

감사합니다 :)

+0

코드를 디버깅하면 어떻게됩니까? 우선, Fill() 메서드를 호출하기 전에 연결을 종료하고 이것이 문제가 될 수 있는지 확실하지 않은 것입니다. – Romias

+0

또한 간단한 선택을 시도하십시오 ... 범위를 사용하지 않고 ... 이것이 문제가 될 수 있는지 확인하십시오. – Romias

+0

@Romias - 귀하의 의견을 보내 주셔서 감사합니다. 코드를 정리했습니다. :) 또한 간단한 선택만으로 확인했지만 작동하지 않았습니다. – pv619

답변

0

당신의 코드와 나는 예외가있다 [전체 $ A2 : Z]

또한 답변을 찾지 못했지만 쿼리가 작동하지 않는 것처럼 보입니다.

루프별로 이름별로 각 시트에 액세스하십시오.

string Path = @"E:\\DemoXls.xls"; 
     var con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" + Path + "';Extended Properties=" + (char)34 + "Excel 8.0;IMEX=1;" + (char)34 + ""); 

     con.Open(); 
     DataTable mySheets = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
     con.Close(); 

     var dt = new DataTable(); 
     var da = new OleDbDataAdapter(); 
     da.SelectCommand = new OleDbCommand(); 
     da.SelectCommand.Connection = con; 
     var query = "Select * from [{0}]"; 
     foreach (DataRow item in mySheets.Rows) 
     { 
      da.SelectCommand.CommandText = string.Format(query, item["TABLE_NAME"].ToString()); 
      da.Fill(dt); 
      //DO the mapping of DataTable to your List<T> 
     } 
+0

답변 주셔서 감사합니다 귀하의 코드를 시도하고 그것은 작동하지만 jQGrid에 대한 데이터를 표시하지 않는 것 같습니다. 연결 URL에서 문제가 될 수 있습니까? 'url : '@ Url.Action ("TopPlayedInVenueList", "ReportStatistic")', '그게 옳은가요? – pv619

+0

@ Url.Action이 작동해야합니다. 또한 Java Script 코드의 열 이름이 사용중인 TopPlayedInVenue 속성과 일치하지 않습니다. JS 코드에서 FirstName, LastName, LastSSN, Department 및 Salary가 예상되지만 작업이 TrackName 및 ArtistName을 반환합니다. 이것을 확인할 수 있습니까? – arpitbakshi

관련 문제