ListViewToExcel
2016-10-27 16:18 Moon-明月 阅读(220) 评论(0) 收藏 举报/// <summary> /// 将LIstView导出到Excel /// </summary> /// <param name="listView1"></param> /// <param name="sheet1"></param> public void TurnToExcel(ListView listView1, string sheet1) { lv_KQ.Items.Clear(); int iE = ReadWorkNumEnd(); MakeWorkAttendance(3, iE); string Sheetname = sheet1; ListView listView = listView1; if (listView.Items.Count < 1) return; try { ExcelApplication MyExcel = new ExcelApplication(); MyExcel.Visible = true; //display excel application;if value set 'false',please enable the ' finally' code below; if (MyExcel == null) { return; } Workbooks MyWorkBooks = (Workbooks)MyExcel.Workbooks; Workbook MyWorkBook = (Workbook)MyWorkBooks.Add(Missing.Value); Worksheet MyWorkSheet = (Worksheet)MyWorkBook.Worksheets[1]; Range MyRange = MyWorkSheet.get_Range("A1", "H1"); MyRange = MyRange.get_Resize(1, listView.Columns.Count); object[] MyHeader = new object[listView.Columns.Count]; for (int i = 0; i < listView.Columns.Count; i++) { MyHeader.SetValue(listView.Columns[i].Text, i); } MyRange.Value2 = MyHeader; MyWorkSheet.Name = Sheetname; if (listView.Items.Count > 0) { MyRange = MyWorkSheet.get_Range("A2", Missing.Value); object[,] MyData = new Object[listView.Items.Count, listView.Columns.Count]; for (int j = 0; j < listView1.Items.Count; j++) { ListViewItem lvi = listView1.Items[j]; for (int k = 0; k < lvi.SubItems.Count; k++) { if (string.IsNullOrEmpty(lvi.SubItems[k].Text)) { MyData[j, k] = ""; } else { MyData[j, k] = lvi.SubItems[k].Text; } //判断迟到早退给导出的Excel的整行填充颜色 if (k == 3 && !string.IsNullOrEmpty(lvi.SubItems[k].Text) && lvi.SubItems[k].Text.ToString().Length>1)//上班时间 { DateTime date1 = Convert.ToDateTime(lvi.SubItems[k].Text); DateTime date2 = Convert.ToDateTime("08:00"); TimeSpan timeSpan = date1 - date2; if (timeSpan.TotalMinutes>0) { //设置第10行为红色 //MyWorkSheet.get_Range((Microsoft.Office.Interop.Excel.Range)MyWorkSheet.Rows[j+1], (Microsoft.Office.Interop.Excel.Range)MyWorkSheet.Rows[j]).Select(); MyWorkSheet.get_Range((Microsoft.Office.Interop.Excel.Range)MyWorkSheet.Rows[j+2], (Microsoft.Office.Interop.Excel.Range)MyWorkSheet.Rows[j+2]).Interior.ColorIndex = 3; } } if (k == 4 && !string.IsNullOrEmpty(lvi.SubItems[k].Text) && lvi.SubItems[k].Text.ToString().Length > 1)//下班时间 { DateTime date1 = Convert.ToDateTime(lvi.SubItems[k].Text); DateTime date2 = Convert.ToDateTime("17:00"); TimeSpan timeSpan = date1 - date2; if (timeSpan.TotalMinutes<0) { //设置第10行为红色Rows[j]---Cella[j,k] //MyWorkSheet.get_Range((Microsoft.Office.Interop.Excel.Range)MyWorkSheet.Rows[j], (Microsoft.Office.Interop.Excel.Range)MyWorkSheet.Rows[j]).Select(); MyWorkSheet.get_Range((Microsoft.Office.Interop.Excel.Range)MyWorkSheet.Rows[j+2], (Microsoft.Office.Interop.Excel.Range)MyWorkSheet.Rows[j+2]).Interior.ColorIndex = 3; } } } } MyRange = MyRange.get_Resize(listView.Items.Count, listView.Columns.Count); MyRange.Value2 = MyData; MyRange.EntireColumn.AutoFit(); //my MyRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;//水平居中 MyRange.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//垂直居中 MyRange.EntireRow.AutoFit();//单元格行高自动调整 } try { object missing = System.Reflection.Missing.Value; MyWorkBook.Saved = true; MyWorkBook.SaveAs(saveFileDialog1.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, missing, missing, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing); } catch (Exception e1) { ErrorLog.WriteError("Export Error,Maybe the file is opened by other application!\n" + e1.Message); } } catch (Exception Err) { ErrorLog.WriteError(Err.ToString()); } }