Mish1337 Ответов: 2

Удалите dbnull/пустые ячейки из моего datatable C#


Привет ребята

У меня есть запрос, который извлекает данные из базы данных через Storedproceduer. Затем данные сохраняются в DataTable, а затем в сеанс и затем экспортируются в excel с помощью нажатия кнопки.
Моя проблема заключается в том, что в моей таблице есть десятки нулевых значений, и я хочу, чтобы они были удалены перед экспортом в excel.

Вот как выглядит мой код со всем этим:
БД методом:
public void GetData()
       {
        try
        {
            DataTable dt = new DataTable();
            SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            connection.Open();
            using (SqlCommand sqlCmd = new SqlCommand("DAtabase.dbo.SP_EXPORT", connection)) //Extract data: no cons first and cons after
            {
                sqlCmd.CommandType = CommandType.StoredProcedure;
                using (SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd))
                {
                    sqlDa.Fill(dt);
                    if (dt.Rows.Count > 0)
                    {
                        Session["TaskTable"] = dt;
                    }
                }
            }
        }
        catch (Exception)
        {
            Page.ClientScript.RegisterStartupScript(GetType(), "msgbox", "alert('No data found, try again');", true);
        }
    }

Моя функция экспорта:
<pre>protected void Button_Export_DS_Click(object sender, EventArgs e)
    {
        if (dtNew.Rows.Count > 0)
            {
                MemoryStream ms = new MemoryStream();
                int i = 1;
                using (ExcelPackage package = new ExcelPackage(ms))
                {
                    ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet" + i++);
                    worksheet.Cells["A1"].LoadFromDataTable(dtNew, true);
                    worksheet.Cells.AutoFitColumns();

                    Response.Clear();
                    package.SaveAs(Response.OutputStream);
                    Response.AddHeader("content-disposition", "attachchment; filename=DS_Export.xls");
                    Response.Charset = "";
                    Response.ContentType = "application/vnd.xls";
                    Response.End();
                }
            }

    }


Что я уже пробовал:

Я безуспешно искал различные решения в интернете, надеюсь, кто-то сможет мне в этом помочь.
Изменить SQL-код невозможно, так как он работает с функцией pvt, основанной на датах!

2 Ответов

Рейтинг:
2

Christiaan van Bergen

Для замены нулевых значений в результирующем наборе можно использовать функцию ISNULL (). Например:

SELECT [ID], [Name] FROM [People]
вернул бы что-то вроде
1 Chris
2 Null
3 Nancy
Вы можете легко изменить нулевые значения на значение "неизвестно", используя следующее:
SELECT [ID], ISNULL([Name], 'unknown') FROM [People]
Результат был бы таков
1 Chris
2 unknown
3 Nancy
Подробнее об этом здесь[^].


Mish1337

Изменить код sql невозможно, так как он основан на сводной функции, которая извлекает данные на основе времени и даты

Рейтинг:
1

#realJSOP

Измените хранимую процедуру, чтобы заменить значения null разумными значениями по умолчанию.


Mish1337

Изменить код sql невозможно, так как он основан на сводной функции, которая извлекает данные на основе времени и даты