Member 12183079 Ответов: 2

Как скачать CSV-файл с установленным по умолчанию YYYY-MM-DD в C#


public void ExportCSV_Driver()
        {
            string constr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand("SELECT DriverName,Address,ContactNo,DLNo,CONVERT(char(10), DLExpiryDate,126) As DLExpiryDate ,Status FROM [dbo].[DriverRegistration]"))
                {
                    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=Driver.csv");
                            Response.Charset = "";
                            Response.ContentType = "application/text";
                            Response.Output.Write(csv);
                            Response.Flush();
                            Response.End();
                        }
                    }
                }
            }
        }


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

выше приведен мой код, и я хочу знать, как загрузить CSV-файл в формате гггг-MM_DD
потому что когда он загружается, он принимает значение по умолчанию dd-mm-yyy

так что, пожалуйста, помогите мне срочно

2 Ответов

Рейтинг:
2

OriginalGriff

Во - первых, не используйте строку-используйте StringBuilder, он намного эффективнее при работе с большим количеством данных.

Во - вторых, ваш код делает именно то, что вы хотите - CONVERT(...,126) часть запроса SELECT гарантирует, что, и если вы посмотрите на фактические данные CSV, которые вы загружаете своему клиенту, вы увидите, что даты находятся в форме yyyy-MM-dd
То, что происходит после этого, сводится к тому, что клиент использует для отображения данных: он читает CSV, преобразует строку даты в значение даты (что именно то, что он должен делать) и отображает ее в предпочтительном для пользователей формате даты.

Вы должны смотреть на то, что делает пользователь, а не на этот код.


Member 12183079

поэтому, пожалуйста, дайте мне код, как это сделать

Member 12183079

напишите код для замка

OriginalGriff

Прочтите, что я сказал: это то, что пользователь делает с данными, а не какой-либо код, который я мог бы вам дать.

[no name]

вы можете попробовать мой код,этот код полностью прав.
Вы можете попробовать это..
u получит желаемый результат ur

Рейтинг:
1

JIYAUL MUSTAPHA

/*How to download CSV file with default set YYYY-MM-DD in C#*/

/*use this code to get date in YYYY-MM-DD From Sql*/
REPLACE(CONVERT(CHAR(11),Date, 106),' ','-') AS Date


/* use this function to Export/Download CSV File On button Click*/
  private void ExportExcelFile()
    {
       
            DataSet dsExcel = new DataSet();
            dsExcel.Tables.Clear();

            DataTable dtExcelReport = new DataTable();

            dtExcelReport.TableName = "Report";
            dtExcelReport.Columns.Add("Code");
            dtExcelReport.Columns.Add("Name");
           
            
            dtExcelReport.Columns.Add("Date");
          
                
                
                    aPL.Id= Id.Text;
                   
                    DataTable dt = aBL.Detail(aPL);
                    foreach (DataRow dr in dt.Rows)
                    {
                        DataRow drExcelReport = dtExcelReport.NewRow();
                        drExcelReport["Code"] = dr["Code"].ToString();
                        drExcelReport["Name"] = dr["Name"].ToString();
                      
                        drExcelReport["Date"] = dr["Date"].ToString();
                       
                        dtExcelReport.Rows.Add(drExcelReport);
                    }
                    dsExcel.Tables.Add(dtExcelReport);
                    ExcelHelper.ToExcel(dtExcelReport, "" + DateTime.Now.ToString("dd-MMMM-yyyy") + "_Report.xls", Page.Response);
                
            
        
    }

/*For Detail use this code In layer base*/
public DataTable Detail(A_PAL pl)
    {
        A_DAL obj = new A_DAL();
        return obj.Detail(pl);
    }
public DataTable Detail(A_PAL pl)
    {
        con.cmd.CommandText = "SP_ProcedureName";
        con.cmd.CommandType = CommandType.StoredProcedure;
        con.cmd.Parameters.AddWithValue("@Id", pl.Id);
        SqlDataReader sdr;
        DataTable dt = new DataTable();
        con.Open();
        sdr = con.cmd.ExecuteReader();
        dt.Load(sdr);
        con.Close();
        return dt;
    }

/*Procedure On Sql To get data*/
CREATE PROCEDURE [dbo].[SP_ProcedureName]
(
@Id bigint=null
)
AS
BEGIN
SELECT  Code,Name ,REPLACE(CONVERT(CHAR(11),Date, 106),' ','-') AS Date
FROM tbl_Date
WHERE Id=@Id
END