數據是從access數據庫中讀取的。
點擊導出按鈕
去目錄下找到對應的文件
代碼:
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("aa"); dt.Columns.Add("bb"); DataRow dr = dt.NewRow(); dr[0] = "111"; dr[1] = "222"; dt.Rows.Add(dr); string path = AppDomain.CurrentDomain.BaseDirectory + @"" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv"; if (dt2csv(dt, path, "圖書信息", "編號,書名,作者,出版社")) { MessageBox.Show("導出成功,文件位置:" + path); } else { MessageBox.Show("導出失敗"); } } /// <summary> /// 導出報表為Csv /// </summary> /// <param name="dt">DataTable</param> /// <param name="strFilePath">物理路徑</param> /// <param name="tableheader">表頭</param> /// <param name="columname">字段標題,逗號分隔</param> public static bool dt2csv(DataTable dt, string strFilePath, string tableheader, string columname) { try { string strBufferLine = ""; StreamWriter strmWriterObj = new StreamWriter(strFilePath, false, System.Text.Encoding.UTF8); strmWriterObj.WriteLine(tableheader); strmWriterObj.WriteLine(columname); for (int i = 0; i < dt.Rows.Count; i++) { strBufferLine = ""; for (int j = 0; j < dt.Columns.Count; j++) { if (j > 0) strBufferLine += ","; strBufferLine += dt.Rows[i][j].ToString(); } strmWriterObj.WriteLine(strBufferLine); } strmWriterObj.Close(); return true; } catch { return false; } } /// <summary> /// List轉DataTable /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collection"></param> /// <returns></returns> public static DataTable ToDataTable<T>(IEnumerable<T> collection) { var props = typeof(T).GetProperties(); var dt = new DataTable(); dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray()); if (collection.Count() > 0) { for (int i = 0; i < collection.Count(); i++) { ArrayList tempList = new ArrayList(); foreach (PropertyInfo pi in props) { object obj = pi.GetValue(collection.ElementAt(i), null); tempList.Add(obj); } object[] array = tempList.ToArray(); dt.LoadDataRow(array, true); } } return dt; } } }
連接access數據庫有可能會報錯:未在本地計算機上注冊“Microsoft.Jet.OLEDB.4.0”提供程序
win7或win8 64位下調試程序,出現這樣的錯誤提示:未在本地計算機上注冊 Microsoft.Jet.OLEDB.4.0 提供程序
解決方法如下:
方法一:“設置應用程序池默認屬性”/“常規”/”啟用32位應用程序”,設置為 true。
方法二:生成->配置管理器->平台->點擊Any Cpu選項卡->新建->新建平台->X86。
源碼下載連接包含access數據庫文件:https://download.csdn.net/download/u012408847/10933670