在这个xaml文件中button绑定命令的这一点代码,如下图

 <Button x:Name="button1" Content="导出"  Command="{Binding MasterCmd}" Grid.Column="1" Grid.Row="1"/>

MasterCmd这个绑定的命令会在后面对应的cs文件中实现,如下图:

 public class MainViewModel : ViewModelBase
        public MainViewModel()
            Messenger.Default.Register<string>(this, "MasterCommand", ExecuteMasterCmd);
            //new一个命令出来
            MasterCmd = new RelayCommand<string>(ExecuteMasterCmd);
        public RelayCommand<string> MasterCmd
            private set;
        //执行这个命令的函数
        void ExecuteMasterCmd(string arg)
                //首先模拟建立将要导出的数据,这些数据都存于DataTable中  
                System.Data.DataTable dt = new System.Data.DataTable();
                dt.Columns.Add("ID", typeof(string));
                dt.Columns.Add("Name", typeof(string));
                dt.Columns.Add("Type", typeof(string));
                dt.Columns.Add("StationID", typeof(string));
                dt.Columns.Add("Time", typeof(string));
                DataRow row;
                //将数据添加到DataTable中
                for (int i = 0; i < 3; i++)
                    string time = DateTime.Now.ToString("yyyyMMddHHmmss");
                    row = dt.NewRow();
                    row["ID"] = "123";
                    row["Name"] = "成龙";
                    row["Type"] = "男";
                    row["StationID"] = "666";
                    row["Time"] = time;
                    dt.Rows.Add(row);
                string primaryname = "个人信息" + DateTime.Now.ToString("yyyyMMddHHmmss");
                SaveFileDialog saveFileDialog = new SaveFileDialog();            
                saveFileDialog.AddExtension = true;//是否自动添加扩展名
                saveFileDialog.OverwritePrompt = true;//文件已存在是否提示覆盖
                saveFileDialog.CheckPathExists = true;//提示输入的文件名无效
                saveFileDialog.FileName = primaryname;//文件初始名
                string path = "d:\\" + saveFileDialog.FileName.ToString() + ".csv";//文件保存路径
                System.IO.FileStream fs = new FileStream(path, System.IO.FileMode.Create, System.IO.FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs, new System.Text.UnicodeEncoding());
                //Tabel 头
                for (int i = 0; i < dt.Columns.Count; i++)
                    sw.Write(dt.Columns[i].ColumnName);
                    sw.Write("\t");
                sw.WriteLine("");
                //Table 数据块
                for (int i = 0; i < dt.Rows.Count; i++)
                    for (int j = 0; j < dt.Columns.Count; j++)
                        sw.Write(dt.Rows[i][j].ToString());
                        sw.Write("\t");
                    sw.WriteLine("");
                sw.Flush();
                sw.Close();
                MessageBox.Show("导出成功", "提示");
            catch (System.Exception ex)
                MessageBox.Show(ex.Message);

运行后点击按钮提示导出成功后在d盘根目录下可以找到文件(你也可以将代码中的路径修改成你想要的)

有时候我们可能还会想自己决定临时将文件放在某处,这样我们可以修改下代码

 public class MainViewModel : ViewModelBase
        public MainViewModel()
            Messenger.Default.Register<string>(this, "MasterCommand", ExecuteMasterCmd);
            MasterCmd = new RelayCommand<string>(ExecuteMasterCmd);
        public RelayCommand<string> MasterCmd
            private set;
        void ExecuteMasterCmd(string arg)
                string primaryname = "个人信息" + DateTime.Now.ToString("yyyyMMddHHmmss");
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "CSV (*.CSV)|*.csv"; ;
                saveFileDialog.AddExtension = true;//是否自动添加扩展名
                saveFileDialog.OverwritePrompt = true;//文件已存在是否提示覆盖
                saveFileDialog.CheckPathExists = true;//提示输入的文件名无效
                saveFileDialog.FileName = primaryname;//文件初始名
                if (saveFileDialog.ShowDialog() == true)
                    //首先模拟建立将要导出的数据,这些数据都存于DataTable中  
                    System.Data.DataTable dt = new System.Data.DataTable();
                    dt.Columns.Add("ID", typeof(string));
                    dt.Columns.Add("Name", typeof(string));
                    dt.Columns.Add("Type", typeof(string));
                    dt.Columns.Add("StationID", typeof(string));
                    dt.Columns.Add("Time", typeof(string));
                    DataRow row;
                    for (int i = 0; i < 3; i++)
                        row = dt.NewRow();
                        row["ID"] = "123";
                        row["Name"] = "成龙";
                        row["Type"] = "男";
                        row["StationID"] = "666";
                        row["Time"] = "2019-4-25";
                        dt.Rows.Add(row);
                    string path = saveFileDialog.FileName.ToString();//保存路径
                    System.IO.FileStream fs = new FileStream(path, System.IO.FileMode.Create, System.IO.FileAccess.Write);
                    StreamWriter sw = new StreamWriter(fs, new System.Text.UnicodeEncoding());
                    //Tabel header
                    for (int i = 0; i < dt.Columns.Count; i++)
                        sw.Write(dt.Columns[i].ColumnName);
                        sw.Write("\t");
                    sw.WriteLine("");
                    //Table 数据块
                    for (int i = 0; i < dt.Rows.Count; i++)
                        for (int j = 0; j < dt.Columns.Count; j++)
                            sw.Write(dt.Rows[i][j].ToString());
                            sw.Write("\t");
                        sw.WriteLine("");
                    sw.Flush();
                    sw.Close();
                    MessageBox.Show("导出成功", "提示");
            catch (System.Exception ex)
                MessageBox.Show(ex.Message);

修改后启动点击导出如下图:

如果第一种方法运行时出现对路径无访问权限时,是因为vs没有使用管理员权限打开,如下图这种情况:

下面附带第二种方法的源码链接:https://pan.baidu.com/s/1Tkj5yetg7xIkA080ydO1YA 
提取码:9vvd 

 

首先做一个界面。只需要一个button就行了,不搞花里胡哨的东西,如下图:在这个xaml文件中button绑定命令的这一点代码,如下图 &lt;Button x:Name="button1" Content="导出" Command="{Binding MasterCmd}" Grid.Column="1" Grid.Row="1"/&gt;MasterCmd这个绑定的命令会在...
FileStream BookStream = new FileStream(saveFileDialog.FileName.ToString(), FileMode.Create, FileAccess.Write);//定义文件流 book.Write(BookStream);//将工作薄写入文件流 BookStream.Seek(0, SeekOrigin.Begin); //输出之前调用Seek(偏移量,游标位置)方法:获取文件流的长度 BookStream.Close(); MessageBox.Show("导出保存成功!");
/// </summary> /// <param name="dt"></param>eTxt public static void ExportExcelFile(DataTable dt) //获取配置文件导出txt文件路径 string strFilePath = CommConst.TXT_EXPORT_PATH; if (!Di.
一.首先介绍下CSV以及它和Excel的区别 逗号分隔值(Comma-Separated Values,CSV),其文件以纯文本形式存储表格数据(数字和文本),文件的每一行都是一个数据记录。每个记录由一个或多个字段组成,用逗号分隔。使用逗号作为字段分隔符是此文件格式的名称的来源,因为分隔字符也可以不是逗号,有时也称为字符分隔值。 CSV广泛用于不同体系结构的应用程序之间交换数据表格信息,解决不...
直接导出 (1)获取DateGrid的表头列(通过Header属性来获取),后面拿它充当Excel的表头 (2)获取DateGrid,通过foreach遍历DateGrid看它有多少列,那么就去创建多少列表头 (3)获取数据(List列表形式),往表格塞数据 先引入好这个程序集(这个程序集在本机安装Office的时候有,在此电脑直接搜索即可) 复制粘贴到项目的bin目录下的Debug目录 然后在项目添加这个引用
SaveFileDialog objSFD = new SaveFileDialog() { DefaultExt = "csv", Filter = "CSV Files (*.csv)|*.csv|Excel XML (*.xml)|*.xml|All files (*.*)|*.*", FilterIndex = 1 }; if (objSFD.ShowDialog(
封装成类,供以后使用(将datagrid导出)using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; namespace AstroATE clas...
我可以回答这个问题。WPF 生成.fit文件的代码可以通过使用 Microsoft.Win32.SaveFileDialog 类来实现。具体实现方式可以参考以下代码: SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "FIT Files (*.fit)|*.fit"; if (saveFileDialog.ShowDialog() == true) using (FileStream fileStream = new FileStream(saveFileDialog.FileName, FileMode.Create)) // 在此处编写生成.fit文件的代码 当用户选择保存文件时,会弹出一个对话框,用户可以选择保存的文件名和路径。然后,使用 FileStream 类将生成的.fit文件写入到磁盘上。