EPPlus库的安装和使用 C# 中 Excel的导入和导出

简介: 本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。

安装

工具栏->NuGet 包管理器->管理解决方案的NuGet程序包

在这里插入图片描述

安装到当前项目中

在这里插入图片描述

使用

将 DataGridView 数据导出为Excel

  1. 首先,需要将数据DataGridView对象转换为DataTable
private void btnExport_Click(object sender, EventArgs e)
{
    // 1.将当前页面的dataGridView获取并且转换为datatable对象用于转换数据
    DataTable dt = new DataTable();

    // 创建一个新的DataTable,并添加列  
    for (int i = 0; i < dvgame.ColumnCount; i++)
    {
        dt.Columns.Add(dvgame.Columns[i].HeaderText);
    }

    // 添加行数据  
    for (int i = 0; i < dvgame.RowCount; i++)
    {
        DataRow dr = dt.NewRow();
        for (int j = 0; j < dvgame.ColumnCount; j++)
        {
            dr[j] = dvgame.Rows[i].Cells[j].Value.ToString();
        }
        dt.Rows.Add(dr);
    }
    // 2.使用工具类,将datatable导出为Excel
    ExcelDataConvert.DataToExcel(dt);
}
  1. 将DataTable传入工具类中,导出为Excel
public static void DataToExcel(DataTable dataTable)
{
    // 1.创建一个Excel文件
    ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 使用非商业许可
    ExcelPackage excelPackage = new ExcelPackage();
    // 2.创建一个ExcelSheet 工作表  
    ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1");
    // 3.将数据写入到Excel中
    worksheet.Cells["A1"].LoadFromDataTable(dataTable, true);
    // 4.保存文件 保存Excel文件  
    string dictFolder = "C:\\Users\\robin\\Desktop\\csharpExcels";

    DateTime currentTime = DateTime.Now;
    string year = "\\" + currentTime.Year.ToString();
    string month = "\\" + currentTime.Month.ToString();
    string day = "\\" + currentTime.Day.ToString();

    dictFolder += year + month + day;

    // 判断文件夹是否存在,如果不存在则递归创建
    if (!Directory.Exists(dictFolder))
    {
        Directory.CreateDirectory(dictFolder);
    }

    string fileName = "\\" + DateTime.Now.ToString("hh-mm-ss")+ "games.xlsx";

    string filePath = dictFolder + fileName;

    if (File.Exists(filePath))
    {
        File.Delete(filePath);
    }
    excelPackage.SaveAs(new FileInfo(filePath));
    // Console.WriteLine("Excel文件已导出!");
    MessageBox.Show("Excel文件已经导出!路径为"+filePath);
}

将Excel导入到数据库中

导入数据无非就是,读取数据,以及Sql注入

public static void ExcelToDataGame(string filepath)
{
   

    // 1.配置Eplus
    ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 使用非商业许可,如有需要请更改  
    ExcelPackage package = new ExcelPackage(new FileInfo(filepath));

    ExcelWorksheet worksheet = package.Workbook.Worksheets[0];  // 选择第一个工作表  
    int rowCount = worksheet.Dimension.Rows;  // 获取行数  
    int colCount = worksheet.Dimension.Columns;  // 获取列数  

    // 2.获取数据库对象
    GameDataAccess conn =  GameDataAccess.GetInstance();
    int importCounts = 0;
    for (int row = 1; row <= rowCount; row++)
    {
   
        if (row == 1)
        {
   
            continue;
        }
        // 3.每次读取一行,执行一行SQl的插入
        string sql = "";
        GameEntity game = new GameEntity();
        game.GameName = worksheet.Cells[row, 1].Value.ToString();
        game.BackImg = worksheet.Cells[row, 2].Value.ToString();
        game.AddTime = DateTime.ParseExact(worksheet.Cells[row, 3].Value.ToString(), "yyyy/M/d H:mm:ss", null);
        game.Price = decimal.Parse(worksheet.Cells[row, 4].Value.ToString());
        game.Issue = worksheet.Cells[row, 5].Value.ToString();
        game.Type = worksheet.Cells[row, 6].Value.ToString();
        game.Describe = worksheet.Cells[row, 7].Value.ToString();
        game.Status = worksheet.Cells[row, 8].Value.ToString() == "下架" ? 0 : 1; //下架 0 ,正常 1
        int rs = conn.AddGame(game);
        if (rs < 0) {
    return; }
        importCounts++;
        MessageBox.Show(game.GameName + "导入成功!");
    }
    MessageBox.Show("共计导入"+importCounts);
}
相关文章
Excel中如何批量重命名工作表与将每个工作表导出到单独Excel文件
本文介绍了如何在Excel中使用VBA批量重命名工作表、根据单元格内容修改颜色,以及将工作表导出为独立文件的方法。同时提供了Python实现导出工作表的代码示例,适用于自动化处理Excel文档。
|
数据格式 UED
记录一次NPOI库导出Excel遇到的小问题解决方案
【11月更文挑战第16天】本文记录了使用 NPOI 库导出 Excel 过程中遇到的三个主要问题及其解决方案:单元格数据格式错误、日期格式不正确以及合并单元格边框缺失。通过自定义单元格样式、设置数据格式和手动添加边框,有效解决了这些问题,提升了导出文件的质量和用户体验。
1279 3
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
512 1
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
1340 6
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
1278 4
|
Java API Apache
|
前端开发 JavaScript Java
导出excel的两个方式:前端vue+XLSX 导出excel,vue+后端POI 导出excel,并进行分析、比较
这篇文章介绍了使用前端Vue框架结合XLSX库和后端结合Apache POI库导出Excel文件的两种方法,并对比分析了它们的优缺点。
3202 0
如何根据Excel某列数据为依据分成一个新的工作表
在处理Excel数据时,我们常需要根据列值将数据分到不同的工作表或文件中。本文通过Python和VBA两种方法实现该操作:使用Python的`pandas`库按年级拆分为多个文件,再通过VBA宏按班级生成新的工作表,帮助高效整理复杂数据。
|
数据采集 数据可视化 数据挖掘
用 Excel+Power Query 做电商数据分析:从 “每天加班整理数据” 到 “一键生成报表” 的配置教程
在电商运营中,数据是增长的关键驱动力。然而,传统的手工数据处理方式效率低下,耗费大量时间且易出错。本文介绍如何利用 Excel 中的 Power Query 工具,自动化完成电商数据的采集、清洗与分析,大幅提升数据处理效率。通过某美妆电商的实战案例,详细拆解从多平台数据整合到可视化报表生成的全流程,帮助电商从业者摆脱繁琐操作,聚焦业务增长,实现数据驱动的高效运营。
|
存储 安全 大数据
网安工程师必看!AiPy解决fscan扫描数据整理难题—多种信息快速分拣+Excel结构化存储方案
作为一名安全测试工程师,分析fscan扫描结果曾是繁琐的手动活:从海量日志中提取开放端口、漏洞信息和主机数据,耗时又易错。但现在,借助AiPy开发的GUI解析工具,只需喝杯奶茶的时间,即可将[PORT]、[SERVICE]、[VULN]、[HOST]等关键信息智能分类,并生成三份清晰的Excel报表。告别手动整理,大幅提升效率!在安全行业,工具党正碾压手动党。掌握AiPy,把时间留给真正的攻防实战!官网链接:https://www.aipyaipy.com,解锁更多用法!

热门文章

最新文章