C# 将数据生成excel并储存
来源:互联网 发布:mac综艺体字体下载 编辑:程序博客网 时间:2024/06/04 08:18
最近在做一个室内CS的项目,上位机需要用的东西比较多。
这里说一下怎么将数据生成excel并储存
有以下几步:(默认已有listview控件情况下)
1.定义一个string的二维数组_data用来储存listview内的项和其子项
2.弹出dialog对话框,编辑储存位置和文件名。将文件名储存到string path
3.知道储存路径后,新建workbook工作薄,新建worksheet工作表,新建cells表格
4.将_data数组内数据存入cells表格,并处理cells内格式style
5.try储存path文件,catch文件被占用出错情况。输出日志信息(时间+文件名)
具体的操作步骤:
先完成控件的设置:
1拖取listview,如果子项需要显示网格线的画,在listview中找到属性GridLines=True
2编辑项和列,可能有的人找不到如何编辑子项,这里图片显示一下
3视图用detials
4按钮控件没什么好说的
代码部分。需要添加的引用名:Aspose.Cells.DLL,这个网上可以下载到。
1添加指令集
<span style="white-space:pre"></span>using System.IO;<span style="white-space:pre"></span>using Aspose.Cells;
2按照文最上面的步骤来写储存函数
public void SaveToExcel(ListView listview,List<int> columnwidth,string title) { string path; SaveFileDialog filedialog = new SaveFileDialog(); filedialog.Filter = "Excel file(*,xls)|*.xls"; if (filedialog.ShowDialog() == DialogResult.OK) { path = filedialog.FileName; //新建excel Workbook wb = new Workbook(); Worksheet ws = wb.Worksheets[0]; Cells cell = ws.Cells; //储存数据到数组 string[,] _dataReport = new string[listview.Items.Count, listview.Columns.Count]; for (int i = 0; i < listview.Items.Count; i++) { for (int j = 0; j < listview.Columns.Count; j++) { _dataReport[i,j] = listview.Items[i].SubItems[j].Text.ToString(); } } Range range1 = cell.CreateRange(0, 0, 2, listview.Columns.Count); range1.Merge(); //标题style cell.SetRowHeight(0,40); Style style1 = wb.Styles[wb.Styles.Add()]; style1.HorizontalAlignment = TextAlignmentType.Center; style1.Font.Name = "宋体"; style1.Font.IsBold = true; style1.Font.Size = 20; //内容style Style style2 = wb.Styles[wb.Styles.Add()]; style2.HorizontalAlignment = TextAlignmentType.Center; style2.Font.Size = 14; //储存标题和内容(A1和此时(0,0)一样) cell["A1"].PutValue(title); cell["A1"].SetStyle(style1); //第二行内容 cell[2, 0].PutValue("队伍名称"); cell[2, 1].PutValue(textBox10.Text.ToString() + "队"); cell[2, 2].PutValue(textBox11.Text.ToString() + "队"); cell[2, 0].SetStyle(style2); cell[2, 1].SetStyle(style2); cell[2, 2].SetStyle(style2); //第三行以后内容 int posStart = 3; for (int i = 0; i < listview.Items.Count; i++) { for (int j = 0; j < listview.Columns.Count; j++) { cell[i + posStart, j].PutValue(_dataReport[i, j].ToString()); cell[i + posStart, j].SetStyle(style2); } } //合并单元格显示时间(注意合并完之后,对于本身的行变量和列变量的计数并没有变化。)(B5和此时(4,1)一样) Range range2 = cell.CreateRange(4, 1, 1, 2); range2.Merge(); cell["B5"].PutValue(_dataReport[listview.Items.Count - 1,listview.Columns.Count - 1].ToString()); cell["B5"].SetStyle(style2); for (int i = 0; i < listview.Columns.Count; i++) { cell.SetColumnWidth(i, Convert.ToDouble(columnwidth[i].ToString())); } //储存 try { wb.Save(path); MessageBox.Show("成功"); textBox5.AppendText(DateTime.Now.ToString() + " 储存成功。位置:" + path.ToString() + "\r\n"); } catch (Exception e) { MessageBox.Show("失败,原因:" + e); textBox5.AppendText(DateTime.Now.ToString()+"储存失败。"); } } }
有几个点解释一下:
SaveFileDiallog.ShowDialog可以弹出另存为的对话框
SaveFileDialog.Filter是文件类型
SaveFileDialog.Filename是文件名,其中包含文件的名字和路径
SaveFileDialog.ShowDialog的返回值是DialogResult.OK,即确认储存文件名和路径和类型
储存数组有string[,]而不是string[][],两者是有区别的,前者是一个string的二维数组,而后者是一个string[]的一位数组。
例如:
[qw,qwe,qweqwe,rr,rwqweeqw,ew,ewq]
和
[[qw,qwe,qwe][qwe,rr,rwqwe][eqw,ew,ewq]]
的区别。
合并单元格函数的入口参数含义
Range range2 = cell.CreateRange(4, 1, 1, 2);range2.Merge();
第一句话的CreateRange中(4,1,1,2)表示,从excel中第4+1行第1+1列开始,向下1行,向右2列。
当同名文件名被占用的时候,储存save()会出错,这时候需要catch(exception e)进行一下提示和处理了。
- C# 将数据生成excel并储存
- C# 将数据生成excel并储存
- web程序:将数据生成一个excel表格并下载
- C#将数据集连接到Excel并显示
- C#将数据集连接到Excel并显示
- C#生成txt文件,并将数据写入进去
- 使用函数生成excel模板并将excel中的数据导入到内表中
- C#创建Excel文件并将数据导出到Excel文件
- C# 下载excel模板,并将数据导进模板excel
- Wireshark之利用IO Graph分析数据并将数据复制到excel中生成图
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中
- 使用POI 将数据库中的数据生成Excel文件并下载
- c# 将datagridview 生成为excel
- C#生成Excel 2007文件并下载
- 将excel数据解析并插入数据库
- ubuntu 15.10 必装软件
- C++格式化输出一:八进制,十进制,十六进制,二进制输出
- 最简单的内核模块编译记录
- 使用three.js画一个三角形
- SwipeRefreshLayout简单使用
- C# 将数据生成excel并储存
- 码农如何克服“职业病”
- 国内SDK开发包下载
- Asp.Net中图片大小的缩放
- 程序员分类
- Linux上编译hadoop-2.7.1的libhdfs.so和libhdfs.a
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- 安卓错误积累(1)
- mysql伪序列实现-最简单方法