//导出Excel
public void ExportToExecl()
{
//System.Windows.Forms.SaveFileDialog sfd = new SaveFileDialog();
//sfd.DefaultExt = "xls";
string FileName = "年度旅客查验分析-" + DateTime.Now.ToString("yyyyMMddHHmmss")+".xlsx";
//sfd.Filter = "Excel文件(*.xls)|*.xls";
//if (sfd.ShowDialog() == DialogResult.OK)
//{
DoExport(SortListViewData, FileName);
//}
}
/// <summary>
/// 具体导出的方法
/// </summary>
/// <param name="listView">ListView</param>
/// <param name="strFileName">导出到的文件名</param>
private void DoExport(ListView listView, string strFileName)
{
try
{
if (listView.Items.Count == 0)
{
MessageBox.Show("无数据!请先查询出数据后再进行导出操作。", "导出提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
int rowNum = listView.Items.Count;
int columnNum = listView.Items[0].SubItems.Count;
if (rowNum == 0 || string.IsNullOrEmpty(strFileName))
{
return;
}
if (rowNum > 0)
{
ArrayList list = new ArrayList(NewmyInspectionInfos);
System.Data.DataTable dt = new System.Data.DataTable();
DataColumn dc1 = new DataColumn(listView.Columns[0].Text, typeof(string));
DataColumn dc2 = new DataColumn(listView.Columns[1].Text, typeof(string));
DataColumn dc3 = new DataColumn(listView.Columns[2].Text, typeof(string));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
DataRow row;
for (int i = 0; i < list.Count; i++)
{
row = dt.NewRow();
row[listView.Columns[0].Text] = NewmyInspectionInfos[i].PersonnelName;
row[listView.Columns[1].Text] = NewmyInspectionInfos[i].Cjcs;
row[listView.Columns[2].Text] = NewmyInspectionInfos[i].Rjcs;
dt.Rows.Add(row);
}
TableToExcel(dt, strFileName);
GC.Collect();
}
}
catch (Exception ex)
{
MessageBox.Show("导出失败!错误信息:" + ex.ToString(), "导出提示");
GC.Collect();
}
}
public void TableToExcel(DataTable dt, string file)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
//设置文件标题
saveFileDialog.Title = "导出Excel文件";
//saveFileDialog.DefaultExt = "xls";
//设置文件类型
saveFileDialog.Filter = "Microsoft Office Excel 工作簿(*.xlsx)|*.xls";
//设置默认文件类型显示顺序
saveFileDialog.FilterIndex = 1;
//是否自动在文件名中添加扩展名
saveFileDialog.AddExtension = true;
//是否记忆上次打开的目录
saveFileDialog.RestoreDirectory = true;
//设置默认文件名
saveFileDialog.FileName = file;
IWorkbook workbook;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
string localFilePath = saveFileDialog.FileName.ToString();
string fileExt = Path.GetExtension(localFilePath).ToLower();
if (fileExt == ".xlsx")
{
workbook = new XSSFWorkbook();
}
else if (fileExt == ".xls")
{
workbook = new HSSFWorkbook();
}
else
{
workbook = null;
return;
}
ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(dt.TableName);
//表头
IRow row = sheet.CreateRow(0);
for (int i = 0; i < dt.Columns.Count; i++)
{
ICell cell = row.CreateCell(i);
cell.SetCellValue(dt.Columns[i].ColumnName);
}
//数据
for (int i = 0; i < dt.Rows.Count; i++)
{
IRow row1 = sheet.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
{
ICell cell = row1.CreateCell(j);
cell.SetCellValue(dt.Rows[i][j].ToString());
}
}
//固定列宽
sheet.SetColumnWidth(0, 18 * 256);
sheet.SetColumnWidth(1, 18 * 256);
sheet.SetColumnWidth(2, 18 * 256);
//转为字节数组
MemoryStream stream = new MemoryStream();
workbook.Write(stream);
var buf = stream.ToArray();
//保存为Excel文件
FileStream fs = new FileStream(localFilePath, FileMode.Create);
fs.Write(buf, 0, buf.Length);
//workbook.Write(fs);
fs.Flush();
fs.Dispose();
stream.Close();
stream.Dispose();
buf = null;
sheet = null;
workbook.Close();
workbook = null;
if (MessageBox.Show("导出成功,是否立即打开?", "导出提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
System.Diagnostics.Process.Start(localFilePath);
}
GC.Collect();//强行销毁
}
}