[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!=" ")
{
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# 公共控制元件之Checkbox和CheckedListBox
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的Command和CommandParameter的繫結
場景:視訊上傳功能,上傳列表使用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);