MVC / C # Экспорт нескольких наборов данных в несколько листов Excel - PullRequest
0 голосов
/ 17 января 2019

Я использую ClosedXML из этого примера. Экспорт наборов данных в несколько листов Excel одного файла Excel

Мой код в основном такой же. Я получаю ошибки ReadTimeOut и WriteTimeOut и, таким образом, файл не создается. (Please see attachment).

вот мой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ClosedXML.Excel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Mvc;

namespace MyProject.DAL
{
    public class GenerateBook
    {
        private DataTable get_TblA()
        {

            using (SqlConnection con = Connection.GetConnection())
            {
         using (SqlCommand cmd = new SqlCommand("SELECT cola, colB
                                FROM dbo.tblA;"))
                {


      using (SqlDataAdapter da = new SqlDataAdapter())
                {
                    DataTable dt = new DataTable();
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = con;
                    da.SelectCommand = cmd;
                    da.Fill(dt);
                    return dt;
                }
            }
        }
    }

    private DataTable get_TblB()
    {

        using (SqlConnection con = Connection.GetConnection())
        {
            using (SqlCommand cmd = new SqlCommand("SELECT cola, colB
    FROM dbo.tblB;"))
            {
                using (SqlDataAdapter da = new SqlDataAdapter())
                {
                    DataTable dt = new DataTable();
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = con;
                    da.SelectCommand = cmd;
                    da.Fill(dt);
                    return dt;
                }
            }
        }
    }

    public DataSet getDataSetExportToExcel()
    {
        DataSet ds = new DataSet();
        DataTable dtEmp = new DataTable("ALM_List_LOB");
        dtEmp = getUIP_ALM_List();

        DataTable dtEmpOrder = new DataTable("GPR_LOB_CMS_VDN");
        dtEmpOrder = getGPR_LOB_CMS_VDN();
        ds.Tables.Add(dtEmp);
        ds.Tables.Add(dtEmpOrder);
        return ds;
    }
    public DataSet GetDataSetExportToExcel()
    {
        //use for multiple sps
        DataSet ds = new DataSet();
        var SPNames = new List<string>() { "storedproc1", "storedproc2" };

        foreach (var SPName in SPNames)
        {
            DataTable dt = new DataTable();
            dt = GetDataTableExportToExcel(SPName);
            ds.Tables.Add(dt);
        }

        return ds;
    }
    private DataTable GetDataTableExportToExcel(string SPName)
    {
        //use for single sp
        DataTable dt = new DataTable();

        using (SqlConnection con = Connection.GetConnection())
        {
            using (var cmd = new SqlCommand(SPName, con))
            {
                using (var sda = new SqlDataAdapter(cmd))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    //cmd.Parameters.AddWithValue()
                    sda.Fill(dt);
                    return dt;
                }
            }
        }
    }
    public ActionResult ExportToExcel()
    {
        try
        {
            var sheetNames = new List<string>() { "sheetName1", "sheetName2" };
            string fileName = "Example.xlsx";

            //  for sps DataSet ds = GetDataSetExportToExcel();
            DataSet ds = getDataSetExportToExcel();
            XLWorkbook wbook = new XLWorkbook();

            for (int k = 0; k < ds.Tables.Count; k++)
            {
                DataTable dt = ds.Tables[k];
                IXLWorksheet Sheet = wbook.Worksheets.Add(sheetNames[k]);
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    Sheet.Cell(1, (i + 1)).Value = dt.Columns[i].ColumnName;
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        Sheet.Cell((i + 2), (j + 1)).Value = dt.Rows[i][j].ToString();
                    }
                }
            }


            Stream spreadsheetStream = new MemoryStream();
            wbook.SaveAs(spreadsheetStream);
            spreadsheetStream.Position = 0;

            return new FileStreamResult(spreadsheetStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = fileName };
        }
        catch(Exception e)
        {
            throw e;
        }
    }
    public SetToExport(string channel, string assets )
    {
        ActionResult status = ExportToExcel();
    }
}

}

Я пытался установить их на 0, но это не помогло. Пожалуйста, руководство, как исправить Я пробовал разные образцы для достижения этой цели, но ни один из них не сработал полностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...