zoukankan      html  css  js  c++  java
  • DataGridView数据用NPOI导出到Excel

    /// <summary>
    /// DataGridView数据用NPOI导出到Excel
    /// </summary>
    /// <param name="fileName">Excel文件名</param>
    /// <param name="dgv">DataGridView数据</param>
    public static void GridToExcel(string fileName, DataGridView dgv)
    {
    if (dgv.Rows.Count == 0)
    {
    return;
    }
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Excel 2003格式|*.xls";
    sfd.FileName = fileName + DateTime.Now.ToString("yyyyMMddHHmmssms");
    if (sfd.ShowDialog() != DialogResult.OK)
    {
    return;
    }
    HSSFWorkbook wb = new HSSFWorkbook();
    ISheet sheet = wb.CreateSheet(fileName);
    IRow headRow = sheet.CreateRow(0);
    for (int i = 0; i < dgv.Columns.Count; i++)
    {
    headRow.CreateCell(i).SetCellValue(dgv.Columns[i].HeaderText);
    }
    for (int i = 0; i < dgv.Rows.Count; i++)
    {
    IRow row = sheet.CreateRow(i + 1);
    for (int j = 0; j < dgv.Columns.Count; j++)
    {
    ICell cell = row.CreateCell(j);
    if (dgv.Rows[i].Cells[j].Value == DBNull.Value)
    {
    cell.SetCellType(CellType.Blank);
    }
    else
    {
    if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.Int32"))
    {
    cell.SetCellValue(Convert.ToInt32(dgv.Rows[i].Cells[j].Value));
    }
    else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.String"))
    {
    cell.SetCellValue(dgv.Rows[i].Cells[j].Value.ToString());
    }
    else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.Single"))
    {
    cell.SetCellValue(Convert.ToSingle(dgv.Rows[i].Cells[j].Value));
    }
    else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.Double"))
    {
    cell.SetCellValue(Convert.ToDouble(dgv.Rows[i].Cells[j].Value));
    }
    else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.Decimal"))
    {
    cell.SetCellValue(Convert.ToDouble(dgv.Rows[i].Cells[j].Value));
    }
    else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.DateTime"))
    {
    cell.SetCellValue(Convert.ToDateTime(dgv.Rows[i].Cells[j].Value).ToString("yyyy-MM-dd"));
    }
    }
    }

    }
    for (int i = 0; i < dgv.Columns.Count; i++)
    {
    sheet.AutoSizeColumn(i);//自动列宽

    }
    using (FileStream fs = new FileStream(sfd.FileName, FileMode.Create))
    {
    wb.Write(fs);
    }
    //成功提示
    if (MessageBox.Show("导出成功,是否立即打开?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
    {
    System.Diagnostics.Process.Start(sfd.FileName);
    }


    }

  • 相关阅读:
    bzoj 1858 线段树
    bzoj 1877 最小费用流
    bzoj 1833 数位dp
    Codeforces Round #285 (Div. 1) B
    HDU2028 Lowest Common Multiple Plus
    HDU5706 GirlCat
    HDU2022 海选女主角
    687E: TOF
    687D: Dividing Kingdom II
    687D: Dividing Kingdom II
  • 原文地址:https://www.cnblogs.com/wwwlzp/p/13596691.html
Copyright © 2011-2022 走看看