将ListView控件中的数据导出到Excel文
来源:互联网 发布:网络速度测试工具 编辑:程序博客网 时间:2024/05/22 05:12
/// <summary>/// 将ListView控件中的数据信息导出到Excel文件当中/// </summary>/// <param name="myListView">承载信息的ListView控件对象</param>public void ExportToExcel(string FileName,ref ListView myListView){ //[构建Microsoft.Office.Interop.Excel.Application对象的一个实例] Application ExcelApplication = new Application(); //[向ExcelApplication对象中添加一个工作簿] ExcelApplication.Workbooks.Add(true); //[提取工作簿] Workbook ExcelWorkbook = ExcelApplication.Workbooks[1]; //[提取工作簿中的活动工作表] Worksheet myWorksheet = (Worksheet)ExcelWorkbook.ActiveSheet; //[设置该Excel文件的打印为横向打印] myWorksheet.PageSetup.Orientation = XlPageOrientation.xlPortrait; //[使用A4纸张进行打印] myWorksheet.PageSetup.PaperSize = XlPaperSize.xlPaperA4; //[设置Excel文件为可见状态] ExcelApplication.Visible = false; //[添加该Excel文件的标题] for (int i = 0; i < myListView.Columns.Count; i++) { myWorksheet.Cells[1, i + 1] = ""; myWorksheet.Cells[2, i + 1] = ""; myWorksheet.Cells[3, i + 1] = ""; myWorksheet.Cells[4, i + 1] = ""; myWorksheet.Cells[5, i + 1] = myListView.Columns[i].Text; } //[设置标题栏文字的大小和加粗状态] Range myRange = myWorksheet.get_Range( myWorksheet.Cells[2, 1], myWorksheet.Cells[2, myListView.Columns.Count]); //[合并单元格] myRange.Merge(null); //[设置单元格内的文字内容] myWorksheet.Cells[2, 1] = DateTime.Now.ToChsShortString() + "直升机巡线情况记录单"; //[设置单元格内的行的“行高大小”] myRange.RowHeight = 40; //[设置单元格内文字的“字体样式”] myRange.Font.Name = "宋体"; //[设置单元格内文字的“字体大小”] myRange.Font.Size = 18; //[设置单元格内文字的“字体加粗”] myRange.Font.Bold = true; //[设置单元格内文字的“水平居中”] myRange.HorizontalAlignment = XlHAlign.xlHAlignCenter; //[设置单元格内文字的“垂直居中”] myRange.VerticalAlignment = XlVAlign.xlVAlignCenter; //[设置单元格的边框] myRange.Borders.LineStyle = 7; //[设置单元格的内部颜色] myRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(50, 138, 222, 208)); //[设置“编号”] myRange = myWorksheet.get_Range( myWorksheet.Cells[4, 1], myWorksheet.Cells[4, myListView.Columns.Count]); //[合并单元格] myRange.Merge(null); //[设置单元格内的文字] myWorksheet.Cells[4, 1] = "编号:HXWC-" + DateTime.Now.ToFileLongString() + "报送单位:".PadLeft(100, ' ') + myListView.Items[0].SubItems[6].Text; //[设置单元格内文字的样式] myRange.Font.Name = "仿宋"; //[设置单元格内文字的大小] myRange.Font.Size = 11; //[设置单元格的边框] myRange.Borders.LineStyle = 7; //[设置报表的头部栏] myRange = myWorksheet.get_Range( myWorksheet.Cells[5, 1], myWorksheet.Cells[5, myListView.Columns.Count]); //[设置单元格的边框] myRange.Borders.LineStyle = 7; //[设置单元格内文字的“水平居中”] myRange.HorizontalAlignment = XlHAlign.xlHAlignCenter; //[设置单元格内文字的“垂直居中”] myRange.VerticalAlignment = XlVAlign.xlVAlignCenter; //[设置单元格内文字的字体样式] myRange.Font.Name = "华文宋体"; //[设置单元格内文字的大小] myRange.Font.Size = 11; //[设置单元格内文字为加粗状态] myRange.Font.Bold = true; //[设置单元格的宽度] myRange.RowHeight = 20; //[设置单元格背景颜色] myRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(80, 219, 229, 241)); //[向该Excel文件中添加内容] for (int i = 0; i < myListView.Items.Count; i++) { for (int j = 0; j < myListView.Items[i].SubItems.Count - 1; j++) { myWorksheet.Cells[i + 6, j + 1] = myListView.Items[i].SubItems[j].Text; } //[设置每一行的样式:其中包括文字的大小、单元格的宽度、单元格内文字的对其方式] //[设置“编号”列] myRange = myWorksheet.get_Range(myWorksheet.Cells[i + 6, 1], myWorksheet.Cells[i + 6, 1]); //[设置单元格内的文字水平居中] myRange.HorizontalAlignment = XlHAlign.xlHAlignCenter; //[设置单元格内的文字字体样式] myRange.Font.Name = "宋体"; //[设置单元格内的文字的大小] myRange.Font.Size = 10; //[设置单元格的宽度] myRange.RowHeight = 25; //[设置单元格的宽度] myRange.ColumnWidth = 8; //[设置单元格的边框] myRange.Borders.LineStyle = 7; //[设置单元格的背景颜色] myRange.Interior.Color = (i % 2) == 0 ? System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(225, 225, 225)) : System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(80, 234, 241, 221)); //[设置“其他”列] myRange = myWorksheet.get_Range( myWorksheet.Cells[i + 6, 2], myWorksheet.Cells[i + 6, myListView.Items[i].SubItems.Count - 1]); //[设置单元格内的文字靠左居中] myRange.HorizontalAlignment = XlHAlign.xlHAlignLeft; //[设置单元格的宽度] myRange.RowHeight = 25; //[设置单元格的宽度] myRange.ColumnWidth = 25; //[设置单元格内的文字字体样式] myRange.Font.Name = "宋体"; //[设置单元格内的文字的大小] myRange.Font.Size = 10; //[设置单元格的边框] myRange.Borders.LineStyle = 7; //[设置单元格的背景颜色] myRange.Interior.Color = (i % 2) == 0 ? System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(225, 225, 225)) : System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(80, 234, 241, 221)); } //[保存Excel文件到本地磁盘] ExcelWorkbook.SaveCopyAs(FileName); ExcelWorkbook.Saved = true; //[进行列集处理] System.Runtime.InteropServices.Marshal.FinalReleaseComObject(myRange); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(myWorksheet); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ExcelWorkbook); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ExcelApplication);}