【C#项目实战】高效Excel导出到默认位置
来源:互联网 发布:网络棋牌充值漏洞 编辑:程序博客网 时间:2024/05/01 18:32
【前言】
还是前两天做那个抽奖系统, 因为抽完奖要保存到Excel表格里所以用到了导出功能。 之前写过一篇用WPS导出的,但是那种导出方法效率太低,经常点击导出以后还要等它转两圈。所以就有了这篇博客。 PS:我们抽奖系统的最终界面和上一版有不小的变化。
亮哥给我们的系统还提了些思想,应该建立一个后台,配置都在后台,页面就留一个按钮就好。 感觉设计的境界确实有差距。
【正文】
下面我们来看高效导出具体如何实现的。 主要思想是通过流把dataset里的数据都放到流里,然后通过流一次性输出成文件。这样就不用多次和Excel交互。从而减少时间。
public void DataSetExportToExcel(DataGridView dgv, string strTitle) { //System.DateTime currentTime = new DateTime(); String currentTime = System.DateTime.Now.ToString("yyyy年M月d日HHmmss"); SaveFileDialog saveFileDialog = new SaveFileDialog();//实例化一个SaveFileDialog保存文件对话框 saveFileDialog.Filter = "Execl files (*.xls)|*.xls";//设置文件类型 saveFileDialog.FilterIndex = 1;//设置默认文件类型显示顺序 //saveFileDialog.RestoreDirectory = true;//设为true时,对话框选择的目录会重新回到关闭此对话框时候的当前目录,就是点保存后,对话选择的默认目录为上次关闭时的目录 //saveFileDialog.CreatePrompt = false; //saveFileDialog.Title = "导出Excel文件到"; saveFileDialog.FileName = strTitle + currentTime + ".xls"; //没有数据的话进行提示 if (dgv.Rows.Count == 0) { MessageBox.Show("没有数据可保存,请先抽奖!"); } else { //DialogResult result = saveFileDialog.ShowDialog();//弹出保存对话框 //if (result == DialogResult.OK)//点了保存按钮进入 //{ Stream myStream;//stream类是读写字节数据的数据流类中最基础的基类 myStream = saveFileDialog.OpenFile();//打开用户选定的具有读写权限的文件,并把获取的文件路径赋值给mystream StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));//实例化数据流的写入,encoding获取编码方式 // StreamWriter sw = File.CreateText(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "2.xls"); string strHeaderText = ""; try { //表中有数据则进行保存 //写标题 for (int i = 0; i < dgv.ColumnCount; i++) { //worksheet.Cells[1, i + 1] = dgv.Columns[i].HeaderText; if (i > 0) { strHeaderText += "\t"; } strHeaderText += dgv.Columns[i].HeaderText;//获取列标题 } sw.WriteLine(strHeaderText); //写内容 string strItemValue = ""; for (int r = 0; r < dgv.Rows.Count; r++) { for (int i = 0; i < dgv.ColumnCount; i++) { if (i > 0) { strItemValue += "\t"; } strItemValue += dgv.Rows[r].Cells[i].Value.ToString().Trim(); } sw.WriteLine(strItemValue);//把dgv的每一行的信息写为sw的每一行 strItemValue = ""; } } catch (Exception) { MessageBox.Show("导出遇到异常", "失败提示"); } finally { // MessageBox.Show(strTitle + currentTime + "成功导出到excel", "提示"); sw.Close(); myStream.Close(); } }
里边一些注释了的代码打开以后就会变成弹窗选择保存地址那种。
【总结】
这里有很多巨人,多爬到巨人肩膀上踩一踩。 一定要爬上去,亲自踩一踩,光看用处不大的。
0 0
- 【C#项目实战】高效Excel导出到默认位置
- 高效导出到Excel
- C#导出到EXCEL
- C#导出到EXCEL
- C#导出到EXCEL
- C#导出到EXCEL
- C#导出到excel
- c#导出到excel
- c# 导出到Excel
- C#导出到EXCEL
- C#导出到EXCEL
- C#导出到Excel
- c#导出到excel
- 恢复Excel批注框到默认位置
- [转]C#导出到EXCEL
- c#导出数据到Excel
- C#数据导出到Excel
- C#数据导出到Excel
- bat处理中添加%errorlevel%在进程的后面获取进程退出码
- 哪门编程语言工资最高?YouWorth和StackOverFlow的数据来说话
- 登陆验证(过滤器)
- C/C++精度问题
- python变量赋值(可变与不可变)
- 【C#项目实战】高效Excel导出到默认位置
- jmeter结果分析
- 大型网站架构演变和知识体系
- React-redux开发之echarts组件封装
- Android的数据储存方式
- 多渠道打包
- 手把手教你读懂源码,View的加载流程详细剖析
- 正则表达式
- Myeclipse8.5破解代码