zoukankan      html  css  js  c++  java
  • C# 对 Excel 的相关操作

    C# 对Excel的操作

    学习自: 教练辅导


    C# 对Excel的读取操作

    我们需要额外添加引用:

    • References
    • 搜索Excel
    • 这样我们的基础就添加完成了。
    • 并且在using 中添加:
    • using Excel = Mirosoft.Office.Interop.Excel;

    这边我们使用我们的控制台程序来对他进行操作。
    我们先来看一下我们的完整代码。

    //读取
    Excel.Application excel_import = new Excel.Application();
    Excel.Workbook book_import = excel_import.Workbooks.Open(FilePath + "/Data.xlsx");
    Excel.Worksheet sheet_import = book_import.Sheets[1];
    
    object[,] data = new object[sheet_import.UsedRange.Cells.Rows.Count, sheet_import.UsedRange.Cells.Columns.Count];
    int import_row_count = sheet_import.UsedRange.Cells.Rows.Count;
    int import_column_count = sheet_import.UsedRange.Cells.Columns.Count;
    for (int i = 0; i < import_row_count; i++)
    {
        for (int j = 0; j < import_column_count; j++)
        {
            data[i,j]=sheet_import.Cells[i+1,j+1].Text;
        }
    }
    

    这样 我们的读取操作就完成了我们的操作也是比较简单

    1.我们需要创建我们的Excel,并且给到我们的Excel 被读取文件的目录,但是需要注意的是,Excel的读取文件目录无法直接读取到bin目录及Debug目录下。需要认为的去获取当前项目的根目录,

    string FilePath = System.IO.Directory.GetCurrentDirectory();
    

    这样我们就获取到了我们的根目录。

    接着我们创建了一个二维数组用于存储存储我们的数据。
    将数据导成二维数组的方法在这里不细说,如果不懂可以自行百度。

    有几个点可以讲一下:

    1. Excel中的索引是从1开始并不是我们常用的0开始
    2. 我们在读取完成后尽量的去关闭或者是清除垃圾,这样可以有效的防止下次操作时出现进程占用的尴尬情况。
    3. 代码中出现的UsedRange 表示被使用过的范围,如果不是很重要可以通过这个方式进行获取Excel 中的行数和列数。
    4. 在我获取Excel指定单元格时前往要注意是从 ’ 1 ‘ 开始并非是 0 开始。

    这样我们的C#对Excel 的读取操作就基本完成了。


    C# 导出Excel格式的文件

    首先我们讲一下我们大概的流程。

    确定文件保存位置 -> 创建Excel进程 -> 创建Excel 的使用区域(这一步十分的重要)-> 将 被导入数据作为一个整体,直接赋值给我们Excel的 sheet表格。 -> 保存文件 -> 退出我们的进程 -> 使用 GC进行垃圾回收

    大概流程应该比较好懂,没有什么难度。
    可能会很好奇为啥要将被导入数据作为一个整体赋值给生成文件,因为这样的速度奇快。

    然后我们看一下代码:

    string export_path = @"F:	est.xlsx";
    Excel.Application excel_export = new Excel.Application();
    Excel.Workbook book_export = excel_export.Workbooks.Add(true);
    Excel.Worksheet sheet_export = book_export.ActiveSheet as Excel.Worksheet;
    Excel.Range range = sheet_export.Range[excel_export.Cells[1, 1], excel_export.Cells[import_row_count, import_column_count]];
    range.Value2 = data;
    GC.Collect();
    book_export.SaveAs(export_path);
    book_export.Save();
    excel_export.Quit();
    

    这样我们的文件导出为Excel就完成了。


    我们来详细的讲一下我们的导出操作。
    首先我们需要确定好我们的文件保存路径,然后我们生成Excel 进程,并且确定 被导入数据在Excel 所要占用的位置,将数据作为整体赋值给rabge.
    然后就是文件保存、进程退出、垃圾回收。


    好了,这个Excel 的相关操作就这么多了,感谢你的阅读。

  • 相关阅读:
    几种排序(c#实现)
    仿 MVC 三大特性
    自定义顺序表ArrayList
    MSMQ消息队列
    IIS 负载均衡(ARR)
    AOP 编程
    SqlServer 存储过程
    mac下mysql5.7.10密码问题
    gearman参数说明
    增加响应header让ajax支持跨域
  • 原文地址:https://www.cnblogs.com/cao-1/p/12075037.html
Copyright © 2011-2022 走看看