sql server查询结果集中字段很多 怎么样才能点击 按钮  出现对话框 选择要导出的字段 点击导出数据  或者用别的方法选择性导出数据都可以   请大虾们指导哈。。

解决方案 »

  1.   

    gridview,repeater中绑定字段,通过checkbox选择导出的字段
    根据选择字段,查询数据绑定到excel
      

  2.   

    查询数据重新生成dataset,再导出excel
      

  3.   

    选择需要到处字段。查询数据到dataset中。
    然后从datatable到处到excel。下面两个方法都可以用。
    //方法一
    //public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
    //{
    //    DataTable dataTable = dataSet.Tables[0];
    //    int rowNumber = dataTable.Rows.Count;//    int rowIndex = 1;
    //    int colIndex = 0;
    //    if (rowNumber == 0)
    //    {
    //        return false;
    //    }//    //建立Excel对象
    //    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    //    excel.Application.Workbooks.Add(true);
    //    excel.Visible = isShowExcle;//    //生成字段名称
    //    foreach (DataColumn col in dataTable.Columns)
    //    {
    //        colIndex++;
    //        excel.Cells[1, colIndex] = col.ColumnName;
    //    }//    //填充数据
    //    foreach (DataRow row in dataTable.Rows)
    //    {
    //        rowIndex++;
    //        colIndex = 0;
    //        foreach (DataColumn col in dataTable.Columns)
    //        {
    //            colIndex++;
    //            excel.Cells[rowIndex, colIndex] = row[col.ColumnName];
    //        }
    //    }//    return true;
    //}//方法二(速度最快)
    /// <summary>
    /// 将数据集中的数据导出到EXCEL文件
    /// </summary>
    /// <param name="dataSet">输入数据集</param>
    /// <param name="isShowExcle">是否显示该EXCEL文件</param>
    /// <returns></returns>
    public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
    {
    DataTable dataTable = dataSet.Tables[0];
    int rowNumber = dataTable.Rows.Count;//不包括字段名
    int columnNumber = dataTable.Columns.Count;
    int colIndex = 0;if (rowNumber == 0) 
    {
    return false;
    }//建立Excel对象 
    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    //excel.Application.Workbooks.Add(true);
    Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
    excel.Visible = isShowExcle;
    //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1];
    Microsoft.Office.Interop.Excel.Range range;//生成字段名称 
    foreach (DataColumn col in dataTable.Columns)
    {
    colIndex++;
    excel.Cells[1, colIndex] = col.ColumnName;
    }object[,] objData = new object[rowNumber, columnNumber]; for (int r = 0; r < rowNumber; r++) 
    {
    for (int c = 0; c < columnNumber; c++)
    {
    objData[r, c] = dataTable.Rows[r][c];
    }
    //Application.DoEvents();
    }// 写入Excel 
    range = worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]);
    //range.NumberFormat = "@";//设置单元格为文本格式
    range.Value2 = objData;
    worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, 1]).NumberFormat = "yyyy-m-d h:mm";return true; 
    }
      

  4.   

    是dataset导出到 excel 打错了。