【问题标题】:C# - Export disconnected dataset data to an excel sheetC# - 将断开连接的数据集数据导出到 Excel 工作表
【发布时间】:2015-08-09 00:45:01
【问题描述】:

我正在使用 ADO.Net。我需要将断开连接的数据集的表格导出到 Excel 工作表。我可以导出整个数据集,但我需要导出一张表。

do
            {
                if (!reader.HasRows)
                {
                    MessageBox.Show("Empty Database");
                }
                else
                {

                    while (reader.Read())
                    {
                        j++;
                        for (int i = 0; i < reader.FieldCount; i++)
                        {
                            Console.Write(reader[i] + " ");
                            xlWorkSheet.Cells[j, i + 1] = reader[i];
                        }
                        Console.WriteLine();
                    }
                }
            } while (reader.NextResult());

有人请帮助我。对不起我的英语和解释。 谢谢

【问题讨论】:

    标签: c# excel ado


    【解决方案1】:

    这可能会对您有所帮助,此方法将 datatable 作为输入,您可以将 dataSet.Tables[indexOfyouDatatable] 或 dataSet.Tables["yourdatatableName"] 作为参数。字符串参数strSheetname是要导出的excel表的名称,这里可以给你的datatable的表名。

    public void exportDtToExcel(DataTable dt, string excelPath, string StrSheetName)
        {
            try
            {
                int ColumnCount;
                if (dt == null || (ColumnCount = dt.Columns.Count) == 0)
                {
                    throw new Exception("Null or empty input table!\n");
                }
    
                Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();
                Excel.Workbooks.Add();
    
                Microsoft.Office.Interop.Excel._Worksheet Worksheet = Excel.ActiveSheet;
    
                object[] Header = new object[ColumnCount];                           
                for (int i = 0; i < ColumnCount; i++)
                {
                    Header[i] = dt.Columns[i].ColumnName;
                }
                Microsoft.Office.Interop.Excel.Range HeaderRange = Worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, 1]), (Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, ColumnCount]));
                HeaderRange.Value = Header;
                DataTable tempdtsheet;
                Worksheet = Excel.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);                
                {
                    Worksheet.Name = StrSheetName;
                    tempdtsheet = dt;
                    Worksheet.Activate();
                }              
                Excel.Range cells = Worksheet.Cells;
                try
                {              
                    for (int i1 = 0; i1 < ColumnCount; i1++)
                        Header[i1] = tempdtsheet.Columns[i1].ColumnName;
                    Microsoft.Office.Interop.Excel.Range HeaderRange1 = Worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, 1]), (Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, ColumnCount]));
                    HeaderRange1.Value = Header;
                    int RowsCount1 = tempdtsheet.Rows.Count;
                    object[,] Cells1 = new object[RowsCount1, ColumnCount];
    
                    for (int j = 0; j < RowsCount1; j++)
                        for (int i1 = 0; i1 < ColumnCount; i1++)
                        {
                            Cells1[j, i1] = tempdtsheet.Rows[j][i1];
                        }
                    Worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[2, 1]), (Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[RowsCount1 + 1, ColumnCount])).Value = Cells1;
                    Worksheet.Columns.AutoFit();
                    ////deleting other sheets
                    ((Microsoft.Office.Interop.Excel.Worksheet)Excel.Worksheets["Sheet3"]).Delete();
                    ((Microsoft.Office.Interop.Excel.Worksheet)Excel.Worksheets["Sheet2"]).Delete();
                    ((Microsoft.Office.Interop.Excel.Worksheet)Excel.Worksheets["Sheet1"]).Delete();
    
                }
                catch (Exception e1)
                {
                    MessageBox.Show("Error" + e1.Message, "Error!!!");
                }
    
                if (excelPath != null && excelPath != "")
                {
                    try
                    {
                        Worksheet.SaveAs(excelPath);
                        Excel.Quit();
                        MessageBox.Show("Output file is saved");
                        GC.WaitForPendingFinalizers();
                        GC.Collect();
                        GC.WaitForPendingFinalizers();
                        GC.Collect();
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("Problem with File path." + ex.Message);
                    }
                    finally
                    {
                        Marshal.ReleaseComObject(Worksheet);
                        Marshal.ReleaseComObject(Excel);
                        Worksheet = null;
                    }
                }
                else
                {
                    Excel.Visible = true;
                }
            }
            catch (Exception exc)
            {
                throw new Exception("Error in Exporting : " + exc.Message);
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      相关资源
      最近更新 更多