【问题标题】:Getting Specific Data in DataSet Column and export in excel在数据集列中获取特定数据并在 excel 中导出
【发布时间】:2015-04-04 19:21:09
【问题描述】:

我的数据集中有 5 列。 姓名、年龄、性别、地址和联系电话 然后我在数据集中有 3 个数据行

在excel中导出时我只需要姓名、地址和联系电话.. 我怎样才能做到这一点? 我正在使用使用 Excel = Microsoft.Office.Interop.Excel; 我只得到第一行.. 不是数据集中的所有行

这是我获取值的代码

Microsoft.Office.Interop.Excel.Application ExcelAp = new Microsoft.Office.Interop.Excel.Application();
ExcelAp.Application.Workbooks.Add(Type.Missing);
ExcelAp.Columns.ColumnWidth = 25;

int i =0;
foreach( DataRow datarow in DsNow.Tables[0].Rows)
{
      for(i = 0; DsNow.Tables[0].Rows.Count - 1; i ++)
            {
                         ExcelAp.Cells[i + 6, 1] = datarow["name"].ToString();
                         ExcelAp.Cells[i + 6, 2] =datarow["address"].ToString();
                         ExcelAp.Cells[i + 6, 3] =datarow["contactnumber"].ToString(); 
            }
} 

请帮忙

【问题讨论】:

    标签: c# database excel dataset vba


    【解决方案1】:

    为什么只使用一个循环就可以同时使用 FOREACH 和 FOR 循环。检查以下代码,对您的代码稍作修改:

    int i =0;
          for(i = 0; DsNow.Tables[0].Rows.Count - 1; i ++)
                {
                      ExcelAp.Cells[i + 6, 1] = DsNow.Tables[0].Rows[i]["name"].ToString();
                      ExcelAp.Cells[i + 6, 2] = DsNow.Tables[0].Rows[i]["address"].ToString();
                      ExcelAp.Cells[i + 6, 3] = DsNow.Tables[0].Rows[i]["contactnumber"].ToString(); 
                }
    

    【讨论】:

    • 先生...我的行中有 3 个不同的数据...您回答的结果是...导出到 excel 的相同数据。多余的结果。例如,我在数据集中有很多数据,我希望所有的姓名、地址和联系电话都将他们的数据显示到 excel 中,而不是在 excel 中显示相同的数据。感谢回复
    • 回答已更新检查。
    • acctualy 这不是正确的先生.. 因为第 6,7 和 8 行是相同的值.. 但在我的数据集中 3 行不一样
    • 我忘记更改行索引,因此它提供了相同的数据。现在我已将其更改为变量“i”。
    • 我明白了...我创建了局部变量并分配了“int j=6”,然后我在这里使用了变量“j” ExcelAp.Cells[j + i, 1] = DsNow。 Tables[0].Rows[i]["name"].ToString();
    【解决方案2】:
             Public void Excel()
            {
             Microsoft.Office.Interop.Excel.Application app;
             Workbook workbook = null;
             Worksheet worksheet = null;
             Range range = null;   
             int i,j,k=1;
             app = new Microsoft.Office.Interop.Excel.Application();
             app.Visible = false;
             workbook = app.Workbooks.Add(1);
             worksheet = (Worksheet)workbook.Sheets[1];
             worksheet.Name = "Sheet1";  
             worksheet.Cells.Locked = false;
    
            //Column1
            j = 1;
            range = worksheet.Rows.get_Range("A" + j.ToString(), "A" + j.ToString());
            range.Font.Size = 11;
            ((Range)worksheet.Cells[j, 1]).EntireColumn.ColumnWidth = 15;
            range.Font.Bold = true;
            range.MergeCells = true;
            range.HorizontalAlignment = Constants.xlCenter;
            //Content
            worksheet.Cells[j, 1] = "Name";
    
            //Column2
            range = worksheet.Rows.get_Range("B" + j.ToString(), "B" + j.ToString());
            range.Font.Size = 11;
            ((Range)worksheet.Cells[j, 2]).EntireColumn.ColumnWidth = 15;
            range.Font.Bold = true;
            range.MergeCells = true;
            range.HorizontalAlignment = Constants.xlCenter;
            //Content
            worksheet.Cells[j, 2] = "Address";
    
    
            //Column3
            range = worksheet.Rows.get_Range("C" + j.ToString(), "C" + j.ToString());
            range.Font.Size = 11;
            ((Range)worksheet.Cells[j, 3]).EntireColumn.ColumnWidth = 15;
            range.Font.Bold = true;
            range.MergeCells = true;
            range.HorizontalAlignment = Constants.xlCenter;
            //Content
            worksheet.Cells[j, 3] = "Contact Number";
    
           //Loop
            DataTable dt = new DataTable();
    
            for (i = 0; i < dt.Rows.Count; i++)
           {
                //Column1
                range = worksheet.Rows.get_Range("A" + k.ToString(), "A" + k.ToString());
                worksheet.Cells[k, 1] = dt.Rows[i]["NAME"].ToString();
    
                //Column2
                range = worksheet.Rows.get_Range("B" + k.ToString(), "B" + k.ToString());
                worksheet.Cells[k, 2] = dt.Rows[i]["ADDRESS"].ToString();
    
                //Column3
                range = worksheet.Rows.get_Range("C" + k.ToString(), "C" + k.ToString());
                worksheet.Cells[k, 3] = dt.Rows[i]["CONTACT_NUMBER"].ToString();
    
                k = k +1;
           }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多