簡體   English   中英

C#-將斷開連接的數據集數據導出到Excel工作表

[英]C# - Export disconnected dataset data to an excel sheet

我正在使用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());

有人請幫助我。 對不起,我的英語和解釋。 謝謝

這可能會對您有所幫助,此方法將數據表作為輸入,並且可以將dataSet.Tables [indexOfyouDatatable]或dataSet.Tables [“ yourdatatableName”]作為參數。 字符串參數strSheetname是將要導出的Excel工作表的名稱,您可以在此處提供數據表的表名。

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);
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM