Есть ли способ извлечь файл Excel из запроса ado.net и добавить в него пользовательские столбцы с помощью c # - PullRequest
0 голосов
/ 02 января 2019

У меня есть шаблон файла Excel, и мне нужно извлечь данные из базы данных SQL Server в этот файл Excel, используя C # так же, как файл шаблона.

Проблема заключается в том, что мне нужно добавить еще одинстолбец с использованием C # в файл Excel, чтобы этот извлеченный файл выглядел как файл шаблона.

Поэтому я не буду извлекать данные файла Excel непосредственно из приложения веб-формы.Сначала мне нужно добавить несколько дополнительных столбцов.

1 Ответ

0 голосов
/ 02 января 2019

Конвертируйте SQL в CSV при написании SQL-результата, добавляйте также данные о пользовательских столбцах. CSV откроется в Excel по умолчанию.

private void SQLToCSV(string query, string Filename)
    {

        SqlConnection conn = new SqlConnection(connection);
        conn.Open();
        SqlCommand cmd = new SqlCommand(query, conn);
        SqlDataReader result = cmd.ExecuteReader();

        using (System.IO.StreamWriter fs = new System.IO.StreamWriter(Filename))
        {
            // Loop through the fields and add headers
            for (int i = 0; i < result.FieldCount; i++)
            {
                string colval = result.GetColumnName(i);
                if (colval.Contains(","))
                    colval = "\"" + colval + "\"";

                fs.Write(colval + ",");
            }

    //CONCATENATE THE COLUMNS YOU WANT TO ADD IN RESULT HERE

            fs.WriteLine();

           // Loop through the rows and output the data
            while (result.Read())
            {
                for (int i = 0; i < result.FieldCount; i++)
                {
                    string value = result[i].ToString();
                    if (value.Contains(","))
                        value = "\"" + value + "\"";

                    fs.Write(value + ",");
                }
                fs.WriteLine();
            }

            fs.Close();
        }
    }

Вы можете скрыть CSV в Excel

using Excel = Microsoft.Office.Interop.Excel;

private void Convert_CSV_To_Excel()
{

    // Rename .csv To .xls
    System.IO.File.Move(@"d:\Test.csv", @"d:\Test.csv.xls");

    var _app = new Excel.Application();
    var _workbooks = _app.Workbooks;

    _workbooks.OpenText("Test.csv.xls",
                             DataType: Excel.XlTextParsingType.xlDelimited,
                             TextQualifier: Excel.XlTextQualifier.xlTextQualifierNone,
                             ConsecutiveDelimiter: true,
                             Semicolon: true);

    // Convert To Excle 97 / 2003
    _workbooks[1].SaveAs("NewTest.xls", Excel.XlFileFormat.xlExcel5);

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