前端之家收集整理的这篇文章主要介绍了
VB C# listview 中的数据导出到excel 文件,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
//先添加一个button1,text为export to excel
//添加一个saveFileDialog1,filter设置为"Excel 文件(*.xls)|*.xls";
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using ExcelApplication = Microsoft.Office.Interop.Excel.Application;
using System.Reflection;
using System.IO;
namespace TestExportExcel
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender,EventArgs e)
{
//string saveFileName = "";
//saveFileDialog1 = new SaveFileDialog();
//saveFileDialog1.Filter = "Excel 文件(*.xls)|*.xls";
// saveFileDialog1.RestoreDirectory = true;
//saveFileName = saveFileDialog1.FileName;
saveFileDialog1.FileName = DateTime.Now.ToString("yyyy-MM-dd");
if (saveFileDialog1.ShowDialog() ==DialogResult.OK)
{
TurnToExcel(listView1,"LOG");
}
}
public void TurnToExcel(ListView listView1,string sheet1)
{
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 < listView.Columns.Count; k++)
{
MyData[j,k] = lvi.SubItems[k].Text;
}
}
MyRange = MyRange.get_Resize(listView.Items.Count,listView.Columns.Count);
MyRange.Value2 = MyData;
MyRange.EntireColumn.AutoFit();
}
try
{
object missing = System.Reflection.Missing.Value;
MyWorkBook.Saved = true;
MyWorkBook.SaveAs(saveFileDialog1.FileName,Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal,missing,false,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,missing);
}
catch (Exception e1)
{
MessageBox.Show("Export Error,Maybe the file is opened by other application!\n" + e1.Message);
}
/*
finally
{
MyExcel.Quit();
System.GC.Collect();
}
*/
// MyExcel = null;
}
catch (Exception Err)
{
MessageBox.Show(Err.Message);
}
}
}
}