C# 导出文件时设置进度条
来源:互联网 发布:手机通话变声器软件 编辑:程序博客网 时间:2024/05/21 19:33
最近做了一个小功能,就是导出Excel文件时,设置进度条来显示导出进度。
导出Excel文件我使用的NPOI实现的,进度条我是用ProgressBar做的。
我设置进度条的基本思路是:
把list数组中的数据包的总条数作为进度条的最大值,进度条的最小值设置为0,循环list数组,每循环一条,就把listrowcount的值加一(对listrowcount的值进行累加),最后把listrowcount的值给进度条的当前值。
自己重新做了一个小例子,例子比较简单,可能还有许多不足之处。
效果图如下:
代码如下:
//导出按钮 private void ExportBtn_Click(object sender, EventArgs e) { Export(); } public void Export() { OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Multiselect = true; fileDialog.Title = "请选择文件"; fileDialog.Filter = "所有文件(*.*)|*.*"; if (fileDialog.ShowDialog() == DialogResult.OK) { string file = fileDialog.FileName; string openfilename = System.IO.Path.GetFileNameWithoutExtension(file);//获取打开的文件名 #region 将选择的文件内容读取到buffer数组中,截取后存到List中 //数据包内容是字节数组 FileStream fStream = new FileStream(file, FileMode.Open, FileAccess.Read); byte[] buffer = new byte[fStream.Length]; fStream.Read(buffer, 0, buffer.Length); fStream.Dispose(); List<byte[]> list = new List<byte[]>(); int num = 0; for (int i = 0; i < buffer.Length; i++) { Byte[] bytes = buffer.Skip(num).Take(10).ToArray(); list.Add(bytes); num += 10; i = num; } #endregion #region 打开文件保存窗口 //打开保存文件窗口 string saveFileName = ""; SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.DefaultExt = "xls"; saveDialog.Filter = "Excel文件|*.xls"; saveDialog.FileName = file;//设置默认文件名 #endregion if (saveDialog.ShowDialog() == DialogResult.OK) { saveFileName = saveDialog.FileName;//设置文件保存名 //设置进度条 CheckForIllegalCrossThreadCalls = false; long totalcount = list.Count;//list中储存的数据包的条数,将条数设置为进度条的最大值 toolStripProgressBar1.Visible = true;//设置进度条可见 toolStripProgressBar1.Value = 0;//设置进度条当前值为0 toolStripProgressBar1.Minimum = 0;//设置进度条最小值为0 toolStripProgressBar1.Maximum = (int)totalcount;//设置进度条的最大值为总条数 long listrowcount = 0; try { //导出文件方法 bool exportresult = ExportExcelFile(list, saveFileName, listrowcount); if (exportresult == true) { MessageBox.Show("导出成功!"); } else { MessageBox.Show("导出失败!"); toolStripProgressBar1.Value = 0;//设置进度条当前位置为0 } } catch (Exception ex) { MessageBox.Show("异常信息:" + ex.Message); }; } } } /// <summary> /// 文件导出 /// </summary> /// <param name="list">存储数据包数据</param> /// <param name="saveFileName">保存的文件名</param> /// <param name="listrowcount">list中截取数据包数据的条数</param> /// <returns></returns> public bool ExportExcelFile(List<byte[]> list, string saveFileName, long listrowcount) { HSSFWorkbook workbook = new HSSFWorkbook();//创建工作簿 ISheet sheet = workbook.CreateSheet("Sheet1");//创建sheet页 for (int m = 0; m < list.Count; m++) { try { //格式设置 IRow RowCenter = sheet.CreateRow( m + 1); ICellStyle styleHeader = workbook.CreateCellStyle(); styleHeader.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; IFont font = workbook.CreateFont(); font.Boldweight = short.MaxValue; font.FontName = "宋体"; font.FontHeightInPoints = (short)17; styleHeader.SetFont(font); IRow RowHeader2 = sheet.CreateRow(0); //列名 RowHeader2.CreateCell(0).SetCellValue("aaa"); RowHeader2.CreateCell(1).SetCellValue("bbb"); RowHeader2.CreateCell(2).SetCellValue("ccc"); RowHeader2.CreateCell(3).SetCellValue("ddd"); RowHeader2.CreateCell(4).SetCellValue("eee"); RowHeader2.CreateCell(5).SetCellValue("fff"); RowHeader2.CreateCell(6).SetCellValue("ggg"); RowHeader2.CreateCell(7).SetCellValue("hhh"); RowHeader2.CreateCell(8).SetCellValue("iii"); RowHeader2.CreateCell(9).SetCellValue("jjj"); string[] data = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; for (int i = 0; i < data.Length; i++) { ICell cell = RowCenter.CreateCell(i); cell.SetCellValue(data[i]); } listrowcount++; } catch(Exception ex) { MessageBox.Show("异常信息:" + ex.Message); return false; } } toolStripProgressBar1.Value = (int)listrowcount; FileStream filename = new FileStream(saveFileName, FileMode.Create); workbook.Write(filename); filename.Close(); filename.Dispose(); return true; }
阅读全文
0 0
- C# 导出文件时设置进度条
- 复制文件进度条 C#
- C#导出数据到文件时设置文件的权限信息
- C#中设置进度条等待
- C# 文件复制 进度条显示
- c# 实现进度条下载文件
- exp导出文件时 字符集设置问题
- C#导出文件函数
- C#导出Excel文件
- C#导出Excle文件
- c# 导出Excel文件
- C#导出excel文件
- C#导出Execl文件
- C# 导出CSV文件
- C# 导出csv文件
- C#导出csv文件
- C# 导出EXCEL文件
- C#导出execl文件
- AOP和OOP区别(手动滑稽)
- linux 安装mysql
- SpringCloud 教程 | 第四篇:断路器(Hystrix)
- C# 实时折线图,波形图
- In 7-bit ZOJ
- C# 导出文件时设置进度条
- 重现Redis--数据结构与对象(二)
- Spring基础---AOP使用拓展
- ssm+shiro整合 (未测试版本)
- [三代] 获取BADI对象的两种方法
- AngularJs获取传递参数方法
- cdn 内容发布网络
- 为什么要用implements Serializable
- 第三部分 Calendar函数接口