• .NET使用NPOI从datagridview导出excel


    NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。
    NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。

    using NPOI.HSSF.UserModel;
    using NPOI.SS.UserModel;

    public void ExportExcel(string fileName, DataGridView dgv)
    {
    string saveFileName = "";
    SaveFileDialog saveDialog = new SaveFileDialog();
    saveDialog.DefaultExt = "xls";
    saveDialog.Filter = "Excel文件|*.xls";
    saveDialog.FileName = fileName;
    saveDialog.ShowDialog();
    saveFileName = saveDialog.FileName;

    HSSFWorkbook workbook = new HSSFWorkbook();
    MemoryStream ms = new MemoryStream();

    NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet("Sheet1");
    int rowCount = dataGridView3.Rows.Count;
    int colCount = dataGridView3.Columns.Count;

    //设置表头
    //IRow cells = sheet.CreateRow(0);
    //cells.CreateCell(0).SetCellValue("编号");
    //cells.CreateCell(1).SetCellValue("任务名称");
    //cells.CreateCell(2).SetCellValue("核心内容");


    for (int i = 0; i < rowCount; i++)
    {
    NPOI.SS.UserModel.IRow dataRow = sheet.CreateRow(i);
    for (int j = 0; j < colCount; j++)
    {
    if (dataGridView3.Columns[j].Visible && dataGridView3.Rows[i].Cells[j].Value != null)
    {
    NPOI.SS.UserModel.ICell cell = dataRow.CreateCell(j);
    cell.SetCellValue(dataGridView3.Rows[i].Cells[j].Value.ToString());
    }
    }
    }
    //自适应宽度
    for (int columnNum = 0; columnNum <= 10; columnNum++)
    {
    int columnWidth = sheet.GetColumnWidth(columnNum) / 256;
    for (int rowNum = 1; rowNum <= sheet.LastRowNum; rowNum++)
    {
    IRow currentRow = sheet.GetRow(rowNum);
    if (currentRow.GetCell(columnNum) != null)
    {
    ICell currentCell = currentRow.GetCell(columnNum);
    int length = Encoding.Default.GetBytes(currentCell.ToString()).Length;
    if (columnWidth < length)
    {
    columnWidth = length;
    }
    }
    }
    sheet.SetColumnWidth(columnNum, columnWidth * 256);
    }

    workbook.Write(ms);
    FileStream file = new FileStream(saveFileName, FileMode.Create);
    workbook.Write(file);
    file.Close();
    workbook = null;
    ms.Close();
    ms.Dispose();

    MessageBox.Show(fileName + " 保存成功", "提示", MessageBoxButtons.OK);
    }

  • 相关阅读:
    Struts2+Spring+Ibatis集成合并
    spring多个定时任务quartz配置
    Quartz作业调度框架
    百度搜索URL参数含义
    代理IP抓取
    解决HttpWebRequest和HtmlAgilityPack采集网页中文乱码问题
    移动端上传头像-相册、拍摄-旋转
    订单倒计时
    css flex布局 实例
    currentTarget与target
  • 原文地址:https://www.cnblogs.com/tuxer/p/12881990.html
Copyright © 2020-2023  润新知