将ListView控件中的数据导出到Excel文件

  1 /// <summary>
2 /// 将ListView控件中的数据信息导出到Excel文件当中
3 /// </summary>
4 /// <param name="myListView">承载信息的ListView控件对象</param>
5 public void ExportToExcel(string FileName,ref ListView myListView)
6 {
7 //[构建Microsoft.Office.Interop.Excel.Application对象的一个实例]
8 Application ExcelApplication = new Application();
9 //[向ExcelApplication对象中添加一个工作簿]
10 ExcelApplication.Workbooks.Add(true);
11 //[提取工作簿]
12 Workbook ExcelWorkbook = ExcelApplication.Workbooks[1];
13 //[提取工作簿中的活动工作表]
14 Worksheet myWorksheet = (Worksheet)ExcelWorkbook.ActiveSheet;
15 //[设置该Excel文件的打印为横向打印]
16 myWorksheet.PageSetup.Orientation = XlPageOrientation.xlPortrait;
17 //[使用A4纸张进行打印]
18 myWorksheet.PageSetup.PaperSize = XlPaperSize.xlPaperA4;
19 //[设置Excel文件为可见状态]
20 ExcelApplication.Visible = false;
21
22 //[添加该Excel文件的标题]
23 for (int i = 0; i < myListView.Columns.Count; i++)
24 {
25 myWorksheet.Cells[1, i + 1] = "";
26 myWorksheet.Cells[2, i + 1] = "";
27 myWorksheet.Cells[3, i + 1] = "";
28 myWorksheet.Cells[4, i + 1] = "";
29 myWorksheet.Cells[5, i + 1] = myListView.Columns[i].Text;
30 }
31
32 //[设置标题栏文字的大小和加粗状态]
33 Range myRange = myWorksheet.get_Range(
34
35 myWorksheet.Cells[2, 1],
36
37 myWorksheet.Cells[2, myListView.Columns.Count]);
38 //[合并单元格]
39 myRange.Merge(null);
40 //[设置单元格内的文字内容]
41 myWorksheet.Cells[2, 1] = DateTime.Now.ToChsShortString() + "直升机巡线情况记录单";
42 //[设置单元格内的行的“行高大小”]
43 myRange.RowHeight = 40;
44 //[设置单元格内文字的“字体样式”]
45 myRange.Font.Name = "宋体";
46 //[设置单元格内文字的“字体大小”]
47 myRange.Font.Size = 18;
48 //[设置单元格内文字的“字体加粗”]
49 myRange.Font.Bold = true;
50 //[设置单元格内文字的“水平居中”]
51 myRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;
52 //[设置单元格内文字的“垂直居中”]
53 myRange.VerticalAlignment = XlVAlign.xlVAlignCenter;
54 //[设置单元格的边框]
55 myRange.Borders.LineStyle = 7;
56 //[设置单元格的内部颜色]
57 myRange.Interior.Color =
58
59 System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(50, 138, 222, 208));
60
61 //[设置“编号”]
62 myRange = myWorksheet.get_Range(
63
64 myWorksheet.Cells[4, 1],
65
66 myWorksheet.Cells[4, myListView.Columns.Count]);
67 //[合并单元格]
68 myRange.Merge(null);
69 //[设置单元格内的文字]
70 myWorksheet.Cells[4, 1] = "编号:HXWC-" + DateTime.Now.ToFileLongString()
71
72 + "报送单位:".PadLeft(100, ' ') + myListView.Items[0].SubItems[6].Text;
73 //[设置单元格内文字的样式]
74 myRange.Font.Name = "仿宋";
75 //[设置单元格内文字的大小]
76 myRange.Font.Size = 11;
77 //[设置单元格的边框]
78 myRange.Borders.LineStyle = 7;
79
80 //[设置报表的头部栏]
81 myRange = myWorksheet.get_Range(
82
83 myWorksheet.Cells[5, 1],
84
85 myWorksheet.Cells[5, myListView.Columns.Count]);
86 //[设置单元格的边框]
87 myRange.Borders.LineStyle = 7;
88 //[设置单元格内文字的“水平居中”]
89 myRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;
90 //[设置单元格内文字的“垂直居中”]
91 myRange.VerticalAlignment = XlVAlign.xlVAlignCenter;
92 //[设置单元格内文字的字体样式]
93 myRange.Font.Name = "华文宋体";
94 //[设置单元格内文字的大小]
95 myRange.Font.Size = 11;
96 //[设置单元格内文字为加粗状态]
97 myRange.Font.Bold = true;
98 //[设置单元格的宽度]
99 myRange.RowHeight = 20;
100 //[设置单元格背景颜色]
101 myRange.Interior.Color =
102
103 System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(80, 219, 229, 241));
104
105 //[向该Excel文件中添加内容]
106 for (int i = 0; i < myListView.Items.Count; i++)
107 {
108 for (int j = 0; j < myListView.Items[i].SubItems.Count - 1; j++)
109 {
110 myWorksheet.Cells[i + 6, j + 1] = myListView.Items[i].SubItems[j].Text;
111 }
112 //[设置每一行的样式:其中包括文字的大小、单元格的宽度、单元格内文字的对其方式]
113 //[设置“编号”列]
114 myRange = myWorksheet.get_Range(myWorksheet.Cells[i + 6, 1], myWorksheet.Cells[i + 6, 1]);
115 //[设置单元格内的文字水平居中]
116 myRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;
117 //[设置单元格内的文字字体样式]
118 myRange.Font.Name = "宋体";
119 //[设置单元格内的文字的大小]
120 myRange.Font.Size = 10;
121 //[设置单元格的宽度]
122 myRange.RowHeight = 25;
123 //[设置单元格的宽度]
124 myRange.ColumnWidth = 8;
125 //[设置单元格的边框]
126 myRange.Borders.LineStyle = 7;
127 //[设置单元格的背景颜色]
128 myRange.Interior.Color =
129
130 (i % 2) == 0 ?
131
132 System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(225, 225, 225))
133
134 :
135
136 System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(80, 234, 241, 221));
137
138 //[设置“其他”列]
139 myRange = myWorksheet.get_Range(
140
141 myWorksheet.Cells[i + 6, 2],
142
143 myWorksheet.Cells[i + 6, myListView.Items[i].SubItems.Count - 1]);
144 //[设置单元格内的文字靠左居中]
145 myRange.HorizontalAlignment = XlHAlign.xlHAlignLeft;
146 //[设置单元格的宽度]
147 myRange.RowHeight = 25;
148 //[设置单元格的宽度]
149 myRange.ColumnWidth = 25;
150 //[设置单元格内的文字字体样式]
151 myRange.Font.Name = "宋体";
152 //[设置单元格内的文字的大小]
153 myRange.Font.Size = 10;
154 //[设置单元格的边框]
155 myRange.Borders.LineStyle = 7;
156 //[设置单元格的背景颜色]
157 myRange.Interior.Color =
158
159 (i % 2) == 0 ?
160
161 System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(225, 225, 225))
162
163 :
164
165 System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(80, 234, 241, 221));
166 }
167
168 //[保存Excel文件到本地磁盘]
169 ExcelWorkbook.SaveCopyAs(FileName);
170 ExcelWorkbook.Saved = true;
171
172 //[进行列集处理]
173 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(myRange);
174 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(myWorksheet);
175 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ExcelWorkbook);
176 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ExcelApplication);
177 }

posted @ 2011-08-20 20:32  夙梦初醒  阅读(851)  评论(0编辑  收藏  举报