C# .net 將數據導出excel字段字符長度超出excel單元格限制時使用CSV文件導出


datatable導出成CSV文件,並下載

public void ExportToCSV(DataTable dt, string fileName)
        {
            StringBuilder sb = new StringBuilder();
            int i = 0;
            for (i = 0; i <= dt.Columns.Count - 1; i++)
            {
                if (i > 0) { sb.Append(","); }
                sb.Append(dt.Columns[i].ColumnName);
            }
            sb.Append("\n");
            foreach (DataRow dr in dt.Rows)
            {
                for (i = 0; i <= dt.Columns.Count - 1; i++)
                {
                    if (i > 0) { sb.Append(","); }
                    sb.Append(dr[i].ToString().Replace(",",""));
                }
                sb.Append("\n");
            }

            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
            byte[] outBuffer = new byte[buffer.Length + 3];
            outBuffer[0] = (byte)0xEF;
            outBuffer[1] = (byte)0xBB;
            outBuffer[2] = (byte)0xBF;
            Array.Copy(buffer, 0, outBuffer, 3, buffer.Length);

            System.Web.HttpResponse rs = System.Web.HttpContext.Current.Response;
            rs.ContentEncoding = System.Text.Encoding.UTF8;
            rs.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
            rs.ContentType = "application/ms-excel";
            rs.Write(Encoding.UTF8.GetString(outBuffer));
            rs.Flush();
            rs.End();
        }

 

CSV文件上傳導入到datatable中

public DataTable GetdataFromCVS(Stream stream)

        {

            DataTable dt = new DataTable();

            StreamReader sr = new StreamReader(stream);

            string strTitle = sr.ReadLine();

            string[] strColumTitle = strTitle.Split(',');   //CVS 文件默認以逗號隔開

            for (int i = 0; i < strColumTitle.Length; i++)

            {

                dt.Columns.Add(strColumTitle[i]);

            }

            while (!sr.EndOfStream)

            {

                string strTest = sr.ReadLine();

                string[] strTestAttribute = strTest.Split(',');

                DataRow dr = dt.NewRow();

                for (int i = 0; i < strColumTitle.Length; i++)

                {

                    dr[strColumTitle[i]] = strTestAttribute[i];

                }

                dt.Rows.Add(dr);

            }

            return dt;

        }

 

非常方便好用數據存儲量大,字段長度不限制格式簡單方便


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM