1. 程式人生 > >[C#]DataGrid控制元件和DateSet集合生成csv檔案的程式碼

[C#]DataGrid控制元件和DateSet集合生成csv檔案的程式碼

using System;
using System.Web;
using System.IO;
using System.Text;
using System.Data;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.Odbc;
using System.Data.OleDb;
using System.IO.Packaging;
using System.Collections.Generic; 

        /// <summary>
        /// DateSet生成csv檔案的標準函式
        /// </summary>
        /// <param name="page">當前頁</param>
        /// <param name="ds">DataSet集合</param>
        /// <param name="sFileName">名稱</param>
        /// <returns></returns>
        public static string ExportDsToCsvFile(System.Web.UI.Page page, DataSet ds,string sFileName)
        {
            StreamWriter sw;
            string sUrl;
            string LineStr = "";
            string sFile;


            
            /
            sUrl = "../zs/uploadfiles/temp/";
            string a = page.Server.MapPath(sUrl);
            if (!Directory.Exists(page.Server.MapPath(sUrl)))
                Directory.CreateDirectory(page.Server.MapPath(sUrl));
            //建立新檔案
            sUrl += sFileName + ".csv";
            sFile = page.Server.MapPath(sUrl);
            sw = new StreamWriter(sFile, false, System.Text.Encoding.Default);//建立新檔案圖示
              




            //string data = "";
            //foreach (DataTable tb in ds.Tables)
            //{
            //    data += tb.TableName + "n";


            //    //寫出列名
            //    foreach (DataColumn column in tb.Columns)
            //    {
            //        data += column.ColumnName + ",";
            //    }
            //    data += "n";


            //    //寫出資料
            //    foreach (DataRow row in tb.Rows)
            //    {
            //        foreach (DataColumn column in tb.Columns)
            //        {
            //            data += row[column].ToString() + ",";
            //        }
            //        data += "n";
            //    }
            //    data += "n";
            //}


            int i, j;


            //寫入標題
            for (j = 0; j < ds.Tables[0].Columns.Count; j++)
            {
                LineStr += ds.Tables[0].Columns[j].ToString() + ",";
            }
            LineStr = LineStr.Substring(0, LineStr.Length - 1);
            sw.WriteLine(LineStr);


            //寫入內容
            for (i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                LineStr = "";
                for (j = 0; j < ds.Tables[0].Columns.Count; j++)
                {
                    LineStr += ts.StringToAlert(ds.Tables[0].Rows[i][j].ToString().Replace(",", " ")) + ",";
                }
                LineStr = LineStr.Substring(0, LineStr.Length - 1);
                //WriteLine ,分隔符號
                sw.WriteLine(LineStr);
            }
            sw.Close();
            long ImageSize;
            byte[] ImageBuffer;
            ImageSize = (new System.IO.FileInfo(sFile)).Length;
            //建立一檔案流物件
            FileStream fs = new FileStream(sFile, FileMode.OpenOrCreate);
            //基於檔案流建立二進位制讀
            BinaryReader r = new BinaryReader(fs);
            //指到檔案的開頭位置
            r.BaseStream.Seek(0, SeekOrigin.Begin);
            ImageBuffer = r.ReadBytes(Int32.Parse(ImageSize.ToString()));
            string[] sf1 = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(sFileName)).Split(new Char[] { '\\' });
            sFileName = sf1[sf1.Length - 1] + ".csv";
            page.Response.Clear();
            page.Response.ContentType = "application/ms-excel";
            page.Response.AddHeader("Content-Disposition", "attachment;filename=" + sFileName);
            page.Response.BinaryWrite(ImageBuffer);
            fs.Close();
            page.Response.End();
            return sUrl;
        } 

         /// <summary>
        /// DataGrid生成csv檔案的標準函式
        /// </summary>
        /// <param name="page">當前頁</param>
        /// <param name="dgdData">DataGrid的ID名</param>
        /// <param name="iFromCol">開始列</param>
        /// <param name="iToCol">結束列</param>
        /// <param name="sFileName">名稱</param>
        /// <returns></returns>
public static string ExportDvToCsvFile(System.Web.UI.Page page,DataGrid dgdData,int iFromCol,int iToCol,string sFileName)

StreamWriter sw;
string sUrl;
string LineStr="";
string sFile;
 
//設定datagrid不分頁以能匯出全部資料
bool bAllowPage= dgdData.AllowPaging;
if (dgdData.AllowPaging)
{
dgdData.AllowPaging=false;
dgdData.DataBind();
}

          
                        sUrl = "../zs/uploadfiles/temp/";
string a=page.Server.MapPath(sUrl);
if (!Directory.Exists(page.Server.MapPath(sUrl)))
Directory.CreateDirectory(page.Server.MapPath(sUrl));
//建立新檔案
sUrl += sFileName+".csv";
sFile = page.Server.MapPath(sUrl);
sw = new StreamWriter(sFile,false,System.Text.Encoding.Default);//建立新檔案圖示
    


int i,j;
 
//寫入標題
for (j=iFromCol;j<=iToCol;j++)
{
LineStr += dgdData.Columns[j].HeaderText+",";
}
LineStr = LineStr.Substring(0,LineStr.Length-1);
sw.WriteLine (LineStr);


//寫入內容
for (i=0;i<dgdData.Items.Count;i++)
{
LineStr = "";
for (j=iFromCol;j<=iToCol;j++)
{
if (dgdData.Items[i].Cells[j].Text!="&nbsp;")
{
LineStr +=ts.StringToAlert(dgdData.Items[i].Cells[j].Text.Replace(","," "))+",";
}
else
{
LineStr +=" ,";
}
}
LineStr = LineStr.Substring(0,LineStr.Length-1);
//WriteLine ,分隔符號
sw.WriteLine  (LineStr);
}
sw.Close();
            long ImageSize;
            byte[] ImageBuffer;
            ImageSize = (new System.IO.FileInfo(sFile)).Length;
            //建立一檔案流物件
            FileStream fs = new FileStream(sFile, FileMode.OpenOrCreate);
            //基於檔案流建立二進位制讀
            BinaryReader r = new BinaryReader(fs);
            //指到檔案的開頭位置
            r.BaseStream.Seek(0, SeekOrigin.Begin);
            ImageBuffer = r.ReadBytes(Int32.Parse(ImageSize.ToString()));


            string[] sf1 = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(sFileName)).Split(new Char[] { '\\' });


            sFileName = sf1[sf1.Length - 1]+".csv";


            page.Response.Clear();
            page.Response.ContentType = "application/ms-excel"; 
            page.Response.AddHeader("Content-Disposition", "attachment;filename=" + sFileName);
            page.Response.BinaryWrite(ImageBuffer);
            fs.Close();
            page.Response.End();


if (bAllowPage)
{
dgdData.AllowPaging = true;
dgdData.DataBind();

return sUrl;

//匯出資訊

              protected void lnkToExcel_Click(object sender, System.EventArgs e)
{

                   DataSet ds=GetDataSet();//根據情況查詢到的DataSet集合
                  Response.Write(PageCtrl.ExportDsToCsvFile(this, ds, "xxxxx表"));

}

相關推薦

[C#]DataGrid控制元件DateSet集合生成csv檔案程式碼

using System; using System.Web; using System.IO; using System.Text; using System.Data; using System.Web.SessionState; using System.Web.

C# 公共控制元件之CheckboxCheckedListBox

Winform的開發基本都是基於控制元件事件的,也就是事件驅動型的。 多選框的放置和值的獲取有很多種,這裡介紹幾個簡單常用的方法 1、直接放置Checkbox,並獲取Checkbox的值 上圖 做法也非常簡單,就是在form中放置多個checkbox,然後迴圈遍歷,檢查其checke

C# winform 自定義函式中找不到Form中的控制元件定義的全域性變數

今天碰到一個比較狗血的問題,想了很多辦法,最後發現,原來如此的坑。 在新建一個form頁面後,我們在程式碼頁面寫程式碼,往往會寫自定義的方法,一般情況下,在自定義的方法中是可以找到form頁面中的控制元件和自定義的全域性變數, 但是如果我們在自定義的方法前面加了static,那麼坑就出來啦,從此這個方法好

C# wpf StackPanel控制元件Border 控制元件 進行基本佈局(2)

1新建一個wpf 程式,去掉grid,控制元件,新增StackPanel控制元件,在新增4個button按鈕,如下圖所示, 分析程式碼,Orientation有2個屬性,1個屬性是Vertical 代表是縱向排列。HorizontalAlignment 代表縱向排列位置,有4個屬性,l

C#一些控制元件的屬性設定用處

//資料庫與datagridview的關聯 首先在datagridview中選擇編輯列,新增自己列名 然後將datagridview的DataPropertyName屬性設定成資料庫中的名字 //contextMenuStip:右鍵出現的事件 //將contextMen

使用巢狀 Repeater 控制元件 Visual C# .Net 顯示分層資料

出自微軟的官方Repeater巢狀例項。此例簡單易懂,適合初步學習和擴充套件試驗。 完整程式碼列表 Nestedrepeater.aspx <%@ Page language="c#" Codebehind="NestedRepeater.aspx.cs" AutoE

ASP.NET中利用DataGrid控制元件顯示圖片以及在圖片文字上加超連結

資料表:     介面程式碼:                  <asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False" BorderWidth="0px"  PageSiz

C# WinForm控制元件的拖動縮放的實現

轉自:http://blog.csdn.net/joyhen/article/details/8572505 C# WinForm控制元件的拖動和縮放是個很有用的功能。實現起來其實很簡單的,主要是設計控制元件的MouseDown、MouseLeave、MouseMove

C# WPF DataGrid控制元件同行編輯的實時更新問題

    這些天一直在研究WPF,試圖用其來進行資料庫客戶端的製作。DataGrid控制元件以其資料顯示和實時編輯的方便易用,自然是不能不用。     資料庫程式中,往往要實現多級聯動這一功能以實現範圍

C# WebBrowser控制元件禁用超連結轉向、指令碼錯誤提示、預設右鍵選單快捷鍵

1. 禁用錯誤指令碼提示 將 WebBrowser控制元件的 ScriptErrorsSuppressed 設為 true 2. 禁用右鍵選單: 將 WebBrowser 的 IsWebBrowserContextMenuEnabled 設為 false 3. 禁用快

Silverlight中DataGrid控制元件動態生成列並結合DataPager進行分頁

1、準備一個實體類 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> ///電流資料 的摘要說明 /// <

WPF中DataGrid控制元件內Button的CommandCommandParameter的繫結

場景:視訊上傳功能,上傳列表使用DataGrid控制元件,視訊有不同的狀態對應不同的操作,DataGrid中最後一列為操作列,裡面是Button控制元件。希望點選Button後執行對應的操作,但是設定Button的 Command="{Binding VideoOperat

C++構造函數編譯器自動生成代碼的陷阱

log bug () 很好 style 自動 pub 為我 ret 最近在項目中debug各種access violation的,其中這個問題比較有代表性,並且能夠被規範的代碼標準解決。 問題可以總結為以下的代碼: 1 class TestString 2 { 3

c# DataGridView控制元件使用

DataGridView 動態新增新行:   DataGridView控制元件在實際應用中非常實用,特別需要表格顯示資料時。可以靜態繫結資料來源,這樣就自動為DataGridView控制元件新增相應的行。假如需要動態為DataGridView控制元

使用 Microsoft.UI.Xaml 解決 UWP 控制元件對老版本 Windows 10 的相容性問題

原文 使用 Microsoft.UI.Xaml 解決 UWP 控制元件和對老版本 Windows 10 的相容性問題 雖然微軟宣稱 Windows 10 將是最後一個 Windows 版本,但由於年代跨越實在太久遠,相容性依然是避不開的問題。Microsoft.UI.Xaml 的預覽版現已推出,旨在解決 U

C# 公共控制元件之ListBox

  Winform控制元件ListBox的用法 1、如何新增listBox的值 this.listBox1.Items.Add("張曉東"); 2、如何判斷listBox集合是否新增過 //檢查新增值是否新增過 if(this.listBox1.items.Contai

C# 公共控制元件之RadioBox ,CheckBox

通常RadioBox稱為單選按鈕,CheckBox稱為多選按鈕,這兩個控制元件都是從ButtonBase類中派生,可以將其視為按鈕。   多個checkBox之間的選擇是互相獨立的,互補影響。多個RadioButton之間是互斥的,只能選擇其中一個。同一個容器下的多個RadioButton之間互

C# 公共控制元件之NotifyIcon 將視窗最小化到托盤

  1、設定窗體和notifyIcon屬性 notifyIcon  ,新增contextMenuStrip控制元件並整合到notifyIcon  的ContextMenuStrip上。 窗體 2、程式碼 using System; usi

C# 公共控制元件之maskedTextBox

IP地址框 1、新增 maskedTextBox 控制元件 2、設定屬性 3、設定MouseLeave事件 private void IPAddressOnMouseLeave(object sender, EventArgs e) { int i=0;

C# 公共控制元件之 dateTimePicker

此控制元件用起來簡單 public Form1() { InitializeComponent(); // Set the MinDate and MaxDate. dateTimePicker1.MinDate = new DateTime(1985, 6, 20);