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

安装

工具栏->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);
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C# ,你可以使用 Microsoft.Office.Interop.Excel 来实现 Excel 文件的导入导出。以下是示例代码: Excel 导入: ```csharp using Microsoft.Office.Interop.Excel; string filePath = "path/to/excel/file.xlsx"; Application excel = new Application(); Workbook workbook = excel.Workbooks.Open(filePath); Worksheet worksheet = workbook.Sheets[1]; // 读取数据 for (int i = 1; i <= worksheet.UsedRange.Rows.Count; i++) { for (int j = 1; j <= worksheet.UsedRange.Columns.Count; j++) { Range range = (Range)worksheet.Cells[i, j]; Console.Write(range.Value2.ToString() + "\t"); } Console.WriteLine(); } // 关闭连接 workbook.Close(); excel.Quit(); ``` 这个示例代码会打开名为 path/to/excel/file.xlsx 的 Excel 文件,并读取第一个工作表的所有数据。你可以根据需要修改文件路径和工作表索引。 Excel 导出: ```csharp using Microsoft.Office.Interop.Excel; string filePath = "path/to/excel/file.xlsx"; Application excel = new Application(); Workbook workbook = excel.Workbooks.Add(); Worksheet worksheet = workbook.Sheets[1]; // 写入数据 for (int i = 1; i <= 10; i++) { for (int j = 1; j <= 5; j++) { Range range = (Range)worksheet.Cells[i, j]; range.Value2 = i * j; } } // 保存文件 workbook.SaveAs(filePath); workbook.Close(); excel.Quit(); ``` 这个示例代码会创建一个新的 Excel 文件,并在第一个工作表写入一些数据。你可以根据需要修改文件路径和数据。注意,使用 SaveAs 方法保存文件时需要指定文件路径和文件格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀死一只知更鸟debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值