【问题标题】:SQL Query to Excel in C# using Epplus使用 Epplus 在 C# 中对 Excel 进行 SQL 查询
【发布时间】:2021-05-23 18:24:56
【问题描述】:

我一直在努力解决这个问题。 我正在尝试将 sql 查询中的字符串和列名写入 excel 文档。 但我只写了行。如何修复代码以编写所有行和列?

            var Template = new FileInfo(@"C:\Temp\XLS\New.xlsx");
            var xlPackage = new ExcelPackage(Template);
            var wsCards = xlPackage.Workbook.Worksheets.Add(NAME_WORKSHEET);
            using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
            {
                sqlConn.Open();
                using (SqlCommand command = new SqlCommand(SQL_WORKSHEET, sqlConn))
                {
                    var reader = command.ExecuteReader();
                    int row = 1;

                    DataTable schemaTable = reader.GetSchemaTable();
                    foreach (DataRow rw in schemaTable.Rows)
                    {
                        foreach (DataColumn column in schemaTable.Columns)
                        {
                            if (column.ColumnName == "ColumnName")
                            {
                                wsCards.Cells["A1"].Value = rw[column];
                            }
                        }
                    }
                    while (reader.Read())
                    {
                        row++;
                        for (int col = 1; col <= reader.FieldCount; col++)
                        {
                            wsCards.Cells[row, col].Value = reader.GetValue(col - 1);
                        }
                    }
                    xlPackage.SaveAs(Template);
                    xlPackage.Dispose();
                }
            }

【问题讨论】:

    标签: c# sql sql-server excel epplus


    【解决方案1】:

                var Template = new FileInfo(@"C:\Temp\XLS\New.xlsx");
                var xlPackage = new ExcelPackage(Template);
                var wsCards = xlPackage.Workbook.Worksheets.Add(NAME_WORKSHEET);
                using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
                {
                    sqlConn.Open();
                    using (SqlCommand command = new SqlCommand(SQL_WORKSHEET, sqlConn))
                    {
                        var reader = command.ExecuteReader();
                        int row = 1,col=1;
    
    
                        DataTable schemaTable = reader.GetSchemaTable();
                        //foreach (DataRow rw in schemaTable.Rows)
                        //{
                            // Write the headers to the first row
                            foreach (DataColumn column in schemaTable.Columns)
                            {
                                 // Condition Will only be required if you want to write 
                                // specific column names
                                //if (column.ColumnName == "ColumnName")
                                //{ 
                                
                                    wsCards.Cells[1,col].Value = rw[column].ColumnName;
                                    col++;
                                //}
                            }
                        //}
                        while (reader.Read())
                        {
                            row++;
                            for ( col = 1; col <= reader.FieldCount; col++)
                            {
                                wsCards.Cells[row, col].Value = reader.GetValue(col - 1);
                            }
                        }
                        xlPackage.SaveAs(Template);
                        xlPackage.Dispose();
                    }
                }

    此代码会将架构中的标题写入 excel 表的第一行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多