Создать CSV с определенным столбцом через C#

Я хотел бы создать файл csv на основе базового запроса из SQL Server, однако я должен создать имена столбцов в первой строке, а во второй строке - описание столбца, как я могу это сделать? Моя проблема состоит в том, чтобы создать вторую строку, потому что она не определяется запросом, и я не знаю, как продолжить, чтобы сказать, что писать в первых двух строках.

У вас есть примеры?

А пока я написал это:

protected void ExportCSV(object sender, EventArgs e)
    {
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

    using (SqlConnection con = new SqlConnection(constr))

    {    
        using (SqlCommand cmd = new SqlCommand("SELECT * FROM Customers"))

        {    
            using (SqlDataAdapter sda = new SqlDataAdapter())

            {    
                cmd.Connection = con;

                sda.SelectCommand = cmd;

                using (DataTable dt = new DataTable())

                {    
                    sda.Fill(dt);

                    //Build the CSV file data as a Comma separated string.

                    string csv = string.Empty;     

                    foreach (DataColumn column in dt.Columns)

                    {    
                        //Add the Header row for CSV file.

                        csv += column.ColumnName + ',';

                    }   

                    //Add new line.

                    csv += "\r\n";     

                    foreach (DataRow row in dt.Rows)

                    {    
                        foreach (DataColumn column in dt.Columns)

                        {    
                            //Add the Data rows.

                            csv += row[column.ColumnName].ToString().Replace(",", ";") + ',';    
                        }     

                        //Add new line.

                        csv += "\r\n";

                    }     

                    //Download the CSV file.

                    Response.Clear();

                    Response.Buffer = true;

                    Response.AddHeader("content-disposition", "attachment;filename=SqlExport.csv");

                    Response.Charset = "";

                    Response.ContentType = "application/text";

                    Response.Output.Write(csv);

                    Response.Flush();

                    Response.End();

                }

            }

        }

    }

}

На этом снимке экрана показано, что я бы хотел во второй строке:

Создать CSV с определенным столбцом через C#

Я думаю этот пост должен помочь ...

Zohar Peled 21.03.2018 09:51

описания нет в моей базе данных, но я мог бы поместить его в массив, я понятия не имею, как продолжить создание второй строки

sebyrock 21.03.2018 09:57

Возможно, стоит опубликовать то, что у вас есть, так как трудно точно понять, в чем заключается ваш вопрос. Например, вы сказали, что не знаете, что писать во второй строке - что в первую очередь?

Paul Michaels 21.03.2018 10:05

@ pm_2: он упомянул, что первые - это имена столбцов. Во втором должно быть описание каждого столбца. Это свойство, которое вы можете установить в студии управления sql-server, чтобы описать, что хранится в этом столбце.

Tim Schmelter 21.03.2018 10:15

к сожалению, вторая строка, которую я должен написать, я не могу изменить базу данных, у меня есть только права на чтение :)

sebyrock 21.03.2018 10:18

@TimSchmelter, вы можете настроить эти свойства ... Я полагаю, мой вопрос: это то, что он ищет (если да, я считаю, что вы можете получить к нему доступ, используя коллекцию DataColumn.ExtendedProperties) msdn.microsoft.com/en-us/library/…

Paul Michaels 21.03.2018 10:20

Не используйте запятую напрямую, используйте ее через переменную среды, чтобы избежать проблем с локализацией.

Code Name Jack 21.03.2018 10:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
273
1

Ответы 1

Мне кажется, вы хотите использовать здесь оператор UNION; Например:

SELECT Hdr1, Hdr2, Hdr3
FROM DUAL
UNION
SELECT 'description1', 'description 2', 'description 3'
FROM DUAL
UNION
SELECT COLUMN1, COLUMN2, COLUMN3
FROM MYTABLE

Обновлено:

С C# вы можете сделать что-то вроде:

foreach (DataColumn column in dt.Columns)
{    
    //Add the Header row for CSV file.
    csv += column.ColumnName + ',';
}   

//Add new line.
csv += Environment.NewLine;     
foreach (DataColumn column in dt.Columns)
{
    csv += $"{column.ExtendedProperties["Description"]},";
}

//Add new line.
csv += Environment.NewLine;     

Очевидно, это зависит от вашей настройки расширенных свойств - если вы этого не сделали, вам понадобится место для получения описания столбца из

Думаю, что пишу еще и логику C#

sebyrock 21.03.2018 10:01

отлично, но как мне поставить это во вторую строку?

sebyrock 21.03.2018 16:08

Вы имеете в виду, куда должен идти этот фрагмент по отношению к остальной части вашего кода?

Paul Michaels 21.03.2018 16:09

точно, где именно я должен его положить

sebyrock 22.03.2018 08:43

Я обновил свой вопрос, чтобы разместить его в правильном месте.

Paul Michaels 22.03.2018 09:13

Благодарность! Я хочу проголосовать положительно, но у меня недостаточно очков :(

sebyrock 22.03.2018 10:47

Другие вопросы по теме