2017-09-18 161 views
0

Excelシートからデータをインポートしていますが、1つのシートでは動作しますが、同じ列と正しいデータでは動作しません。多くのファイルで動作しますが、ほとんど動作しません。私はサンプルを添付し、以下にエラーをコードで記述しています。バインド時に、エラーをスローします。なぜDataBinding: 'System.Data.DataRowView'に 'xxx'という名前のプロパティが含まれていないのですか?

取り組んでいるシート:

enter image description here

とエラーの原因となっているシート:

enter image description here

エラー:

データバインディング:「System.Data .DataRowView 'に' Amount 'という名前のプロパティが含まれていません。

コード:

private void ImportDataToGrid(string FilePath, string Extension, string isHDR) 
    { 
     string conStr = ""; 
     switch (Extension) 
     { 
      case ".xls": //Excel 97-03 
       conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString; 
       break; 
      case ".xlsx": //Excel 07 
       conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString; 
       break; 
     } 
     conStr = String.Format(conStr, FilePath, isHDR); 
     OleDbConnection connExcel = new OleDbConnection(conStr); 
     OleDbCommand cmdExcel = new OleDbCommand(); 
     OleDbDataAdapter oda = new OleDbDataAdapter(); 
     DataTable dt = new DataTable(); 
     cmdExcel.Connection = connExcel; 

     //Get the name of First Sheet 
     connExcel.Open(); 
     DataTable dtExcelSchema; 
     dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
     string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString(); 
     connExcel.Close(); 

     //Read Data from First Sheet 
     connExcel.Open(); 
     cmdExcel.CommandText = "SELECT * From [" + SheetName + "]"; 
     oda.SelectCommand = cmdExcel; 
     oda.Fill(dt); 
     connExcel.Close(); 
     DataColumn dc = new DataColumn("NITNo", typeof(string)); 
     dc.DefaultValue = txtNitNo.Text.ToString(); 
     dt.Columns.Add(dc); 

     dc = new DataColumn("WorkNo", typeof(string)); 
     dc.DefaultValue = txtWorkNo.Text.ToString(); 
     dt.Columns.Add(dc); 

     //Bind Data to GridView 
     gvBOQ.Caption = Path.GetFileName(FilePath); 
     gvBOQ.DataSource = dt; 
     gvBOQ.DataBind(); 
    } 

GV:このような状況では

<asp:GridView ID="gvBOQ" runat="server" AutoGenerateColumns="false" EmptyDataText="No Data Found" 
    CssClass="table table-responsive table-bordered table-striped"> 
    <Columns> 
     <asp:TemplateField HeaderText="S.No"> 
      <ItemTemplate> 
       <%# Container.DataItemIndex+1 %> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="NIT No"> 
      <ItemTemplate> 
       <asp:Literal ID="liNITNo" runat="server" Text='<%#Eval("NITNo") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Work No"> 
      <ItemTemplate> 
       <asp:Literal ID="liWorkNo" runat="server" Text='<%#Eval("WorkNo") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Item Code"> 
      <ItemTemplate> 
       <asp:Literal ID="liItemCode" runat="server" Text='<%#Eval("ItemCode") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Item Description"> 
      <ItemTemplate> 
       <asp:Literal ID="liItemDesc" runat="server" Text='<%#Eval("DescriptionOfItem") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Quantity"> 
      <ItemTemplate> 
       <asp:Literal ID="liQuantity" runat="server" Text='<%#Eval("Quantity") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Unit"> 
      <ItemTemplate> 
       <asp:Literal ID="liUnit" runat="server" Text='<%#Eval("Unit") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Rate"> 
      <ItemTemplate> 
       <asp:Literal ID="liRate" runat="server" Text='<%#Eval("Rate") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Amount"> 
      <ItemTemplate> 
       <asp:Literal ID="liAmount" runat="server" Text='<%#Eval("Amount") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
+1

動作していないシートには、列名の一部としてスペースがありますか(F2を編集するには)? – mjwills

+1

カラム名に先頭または末尾の空白があるかどうか確認することができます。数値 –

+0

@mjwills:いいえ、スペースなし、 – Stacky

答えて

1

、問題は通常、カラム名にスペース()であることが原因です。

私はそれを確認し、スペースを取り除くことをお勧めします。

関連する問題