精华内容
下载资源
问答
  • c#读写excel
    千次阅读
    2021-03-31 15:31:55

    一、简述:

            因为一些需要,需要使用excel读写,之前采用csv文件方式读写有些局限,而且,因为最近这台电脑的office组件右问题,这个方法用不了了。所以,得探索一下Excel新的读取方式,留个记录以便日后查看。

           方式1:使用office组件, Microsoft.Office.Interop.Excel

           方式2:使用NPOI组件,

           方式3:使用OleDB组件,

     

    二、详细介绍

           方式1:使用office的COM组件, Microsoft.Office.Interop.Excel

            依赖:1.需要安装Excel;2.需要添加Microsoft.Office.Interop.Excel 的dll引用 。

            使用体验;可以灵活的操作单个单元格,但读写比较慢(数据量大的时候)。数据量较少还是可以用的。数据量大的时候按行读写可以快点,但。。。只是快点。

            官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.office.interop.excel?view=excel-pia

            使用方法:手头没有现成代码。借鉴(抄)了一下别人的,未验证手头电脑不好使没有excel。

                         链接在此,建议看原文,我的只是用来给自己备忘的  。

                         C#读写Excel(Com组件的方式):https://blog.csdn.net/qq_33459369/article/details/79314465

                         C#读写Excel的几种方法:https://blog.csdn.net/u010593753/article/details/89676558

    	//开头引用
        using Microsoft.Office.Interop.Excel;
    
        //引用定义
        Microsoft.Office.Interop.Excel.Application app;
    	Microsoft.Office.Interop.Excel.Workbooks wbs;
    	Microsoft.Office.Interop.Excel.Worksheet ws;
    
        string fileName ="D:\\test.xls";
    	object oMissiong = System.Reflection.Missing.Value;
        app = new Microsoft.Office.Interop.Excel.Application();
        wbs = app.Workbooks;
        
        wbs.Open(fileName, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong);
        ws = app.Worksheets.get_Item(1);
        ws .Cells[1, 1] = "test";
        wbs.SaveAs(fileName , oMissiong , oMissiong, oMissiong, oMissiong, oMissiong,XlSaveAsAccessMode.xlNoChange,oMissiong, oMissiong, oMissiong, oMissiong, oMissiong);
    
        ClosePro(app, wbs);
    
        //关闭进程
        public void ClosePro(Excel.Application xlApp, Excel.Workbook xlsWorkBook)
            {
                if (xlsWorkBook != null)
                    xlsWorkBook.Close(true, Type.Missing, Type.Missing);
                xlApp.Quit();
                // 安全回收进程
                System.GC.GetGeneration(xlApp);
                IntPtr t = new IntPtr(xlApp.Hwnd);   //获取句柄
                int k = 0;
                GetWindowThreadProcessId(t, out k);   //获取进程唯一标志
                System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
                p.Kill();     //关闭进程
            }
    

           方式2:使用NPOI组件

            参考源:   NPOI使用手册    https://www.cnblogs.com/joean/p/4661056.html

                              NPOI使用教程附Helper  https://www.cnblogs.com/wyy1234/p/10039767.html

            NPOI.Util           基础辅助库
            NPOI.POIFS     OLE2格式读写库
            NPOI.DDF         Microsoft Drawing格式读写库
            NPOI.SS           Excel公式计算库
            NPOI.HPSF      OLE2的Summary Information和Document Summary Information属性读写库
            NPOI.HSSF      Excel BIFF格式读写库

            注意留意.net 和NPOI版本。

     

     

           方式3:使用OleDB组件

     

     

         ......

         临时有事,下次接着写。

    更多相关内容
  • 主要介绍了C#读取Excel到DataTable的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • C#读取Excel单元格内容并赋值给text一个简单demo C#读取Excel单元格内容并赋值给text一个简单demo C#读取Excel单元格内容并赋值给text一个简单demo
  • 内容索引:C#源码,报表打印, 这是一个用C#来操作文件进行读写的实例,比微软官方的Microsoft.Office.Interop.Excel库用起来要简单。这个实例中要用到Interop, Attributes 和 Reflection等类库。
  • C# 读取EXCEL文件的三种经典方法.方法一:采用OleDB读取EXCEL文件:方法二:引用的com组件:Microsoft.Office.Interop.Excel.dll 读取EXCEL文件 方法三:将EXCEL文件转化成CSV(逗号分隔)的文件,用文件流读取...
  • c#读取Excel中的数据-附件资源
  • .Net C# 读取Excel表格数据,根据表格数据结构在数据库新建一张对应的数据表既可以上传导入SQlServer数据库,代码有上传文件功能和解析表格数据功能,这里是建数据转成DataTable保存,导入速度对循环导入效率高很多...
  • C# 编写的操作Excel读取/写入动态库(COM/NPOI两种方式),个人推荐使用NPOI方式,因为COM方式存在无法关闭Excel进程的情况(个人体验COM方式效率有点低)。。。已设置0分,资源自取。
  • C#读写Excel表格

    千次阅读 2022-04-18 14:36:31
    /// 读取表格 /// </summary> /// <param name="excelPath"></param> /// <returns></returns> static DataSet ExcelGetDataTable(string excelPath) { //处理格式..
     /// <summary>
            /// 读取表格
            /// </summary>
            /// <param name="excelPath"></param>
            /// <returns></returns>
            static DataSet ExcelGetDataTable(string excelPath)
            {
                //处理格式
                System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
    
                IExcelDataReader excelReader = null;
    
                using (FileStream stream = new FileStream(excelPath, FileMode.Open, FileAccess.Read))定义文件流
                {
                    //首先判断传入的.xls文件还是xlsx文件
                    int index = excelPath.LastIndexOf('.');//获取文件扩展名前‘.’的位置
                    string extensionName = excelPath.Substring(index + 1);
                    if (extensionName == "xls")
                    {
                        //传入的xls文件---->97-2003format
                        excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
                    }
                    if (extensionName == "xlsx")
                    {
                        //传入的是xlsx文件---->2007 format
                        excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
                    }
                    //1、DataSet----每个电子表格的结果将在结果表中创建
                    DataSet result = excelReader.AsDataSet();
                    stream.Close();
                    return result;
                }
            }
    static void Main(string[] args)
            {
                //定义路径
                string str = @"E:\测试.xlsx";
    
                DataSet dataList = ExcelGetDataTable(str);//接受读取的数据
    
                #region 读取全部数据 外层循环行 内层循环列
    
                string arriveDataTime = dataList.Tables[0].Rows[0][1].ToString();
    
                //dataList.Tables[0]代表第一张表格
                //获取有多少列
                int col = dataList.Tables[0].Columns.Count;
                //获取有多少行
                int row = dataList.Tables[0].Rows.Count;
    
                for (int i = 0; i < row; i++)
                {
                    for (int j = 0; j < col; j++)
                    {
                        Console.WriteLine(dataList.Tables[0].Rows[i][j].ToString());
                    }
                    Console.WriteLine();
                }
                #endregion
    
                Console.ReadLine();
            }

    在依赖中需要添加这两个包 

    以上只是读取操作,只不过这个有个小问题 虽然已经释放了进程 ,但是有时候还是会被占用进程

     /// <summary>
            /// 写入表格
            /// </summary>
            /// <param name="row">列</param>
            /// <param name="con">行</param>
            static void setValue(int row,int con,string value)
            {
                //当前路径
                string importExcelPath = @"E:\测试.xlsx";
                //要保存的路径
                string exportExcelPath = @"E:\测试.xlsx";
    
                var workbook = new XLWorkbook(importExcelPath);
    
                IXLWorksheet sheet = workbook.Worksheet(1);//这个库也是从1开始
                                                           //设置第一行第一列值,更多方法请参考官方Demo
                
                sheet.Cell(row, con).Value = value;//写入值
    
                workbook.SaveAs(exportExcelPath);
            }

     

    展开全文
  • C# 读取EXCEL文件的三种经典方法 1.方法一采用Old读取EXCEL文件? 把EXCEL文件当做一个数据源来进行数据的读取操作实例如下? ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public DataSet ExcelToDS(string Path) { string ...
  • C#读取Excel源码

    2020-10-20 20:00:16
    ODBC 引擎,C#读取Excel,Excel2000,2003,2007等 ODBC 引擎,C#读取Excel,Excel2000,2003,2007等
  • C#读取Excel文件

    千次阅读 2021-11-20 14:15:45
    使用C# 读取Excel中的数据,并展示

    # C#读取Excel数据

    在visual studio 2019创建一个Form窗体文件,设计一个Button按钮和一个GridView控件(用来显示Excel中的数据)

    本文引用了NPOI第三方程序包,可以在VS中通过NuGet搜索下载

            private void Button1_Click(object sender, EventArgs e)
            {
    
                //实例化DataTable来存放数据
                DataTable dt = new DataTable();
                string fileName = @"你的文件路径";
                string sheetName = "sheet1";//Excel的工作表名称
                bool isColumnName = true;//判断第一行是否为标题列
                IWorkbook workbook;//创建一个工作薄接口
                string fileExt = Path.GetExtension(fileName).ToLower();//获取文件的拓展名
                //创建一个文件流
                using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
                {
                    if (fileExt == ".xlsx")
                    {
                        workbook = new XSSFWorkbook(fs);
                    }
                    else
                    {
                        workbook = null;
                    }
    
                    //实例化sheet
                    ISheet sheet = null;
                    if (sheetName != null && sheetName != "")//判断是否存在sheet
                    {
                        sheet = workbook.GetSheet(sheetName);
                        if (sheet == null)
                        {
                            sheet = workbook.GetSheetAt(0);//从第一个开始读取,0位索引
                        }
                        else
                        {
                            sheet = workbook.GetSheetAt(0);
                        }
                    }
    
                    //获取表头
                    IRow header = sheet.GetRow(sheet.FirstRowNum);
                    int startRow = 0;//数据的第一行索引
                    if (isColumnName)//表示第一行是列名
                    {
                        startRow = sheet.FirstRowNum + 1;//数据从第二行开始读
    
                        //遍历表的第一行,即所有的列名
                        for (int i = header.FirstCellNum; i < header.LastCellNum; i++)
                        {
                            ICell cell = header.GetCell(i);
                            if (cell != null)
                            {
                                //获取列名的值
                                string cellValue = cell.ToString();
                                if (cellValue != null)
                                {
                                    DataColumn col = new DataColumn(cellValue);
                                    dt.Columns.Add(col);
                                }
                                else
                                {
                                    DataColumn col = new DataColumn();
                                    dt.Columns.Add(col);
                                }
                            }
                        }
                    }
    
                    //读取数据
                    for (int i = startRow; i <= sheet.LastRowNum; i++)
                    {
                        IRow row = sheet.GetRow(i);
                        if (row == null)
                        {
                            continue;
                        }
                        DataRow dr = dt.NewRow();
                        for (int j = row.FirstCellNum; j < row.LastCellNum; j++)
                        {
                            if (row.GetCell(j) != null)
                            {
                                dr[j] = row.GetCell(j).ToString();
                            }
    
                        }
                        dt.Rows.Add(dr);
                    }
    
                }
                dataGridView1.DataSource = dt;
            }

    然后启动程序,点击button按钮,即可读取Excel中的数据。

    窗体数据

    Excel数据

    展开全文
  • VS2019 C# 读写Excel2007

    2019-12-26 11:47:14
    这是一个类库,可以对Excel 2007 进行读写操作. 开发环境 Visual Studio 2019. 需要安装ODTwithODAC1120320_32bit客户端组件. 可以在此...
  • 读取excel数据,然后用chart组件来根据数据绘制曲线图
  • 主要介绍了c#读取excel内容内容示例,要求Excel需是.xls格式,需要的朋友可以参考下
  • Excel操作类,用于C#Excel进行读写,简单易用。
  • } //读excel文件 private void button1_Click(object sender, EventArgs e) { //Readexcel re = new Readexcel(); // re.read(); // Console.WriteLine("Hello, World!"); var fileName = "test.xlsx"; string ...
    using NPOI.SS.UserModel;
    using NPOI.XSSF.UserModel;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    
    namespace WindowsFormsApp3
    {
        public partial class Form1 : Form
        {
            string sFilePath = "test.xlsx";
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                //  Npio_excel npexcel = new Npio_excel();
                //   npexcel.excel_c();
    
            }
            //读excel文件
            private void button1_Click(object sender, EventArgs e)
            {
                //Readexcel re = new Readexcel();
                // re.read();
    
                //  Console.WriteLine("Hello, World!");
                var fileName = "test.xlsx";
                string allcell;
                if (!File.Exists(fileName))
                {
                    return;
                }
                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                IWorkbook workbook = WorkbookFactory.Create(fs);
                //尝试获取第一个sheet
                var sheet = workbook.GetSheetAt(0);
                //判断是否获取到 sheet
                if (sheet != null)
                {
                    //获取第一行
                    int a = sheet.PhysicalNumberOfRows;// 表的总行数
                                                       //  Console.WriteLine(mmm);
                                                       //   var a = sheet.LastRowNum;  //也是表的总行数,要加1
                    for (int j = 0; j < a; j++)
                    {
                        var row = sheet.GetRow(j);
                        for (int i = 0; i < row.Count(); i++)
                        {
                            ListViewItem listviewItem = new ListViewItem();
                            //   string s = array[i].ToString();
                            //这里没有对格式是否符合要求进行判断,如果内容被修改成其他格式则会出异常的
                            // string[] arr = s.Split(',');
                            listviewItem.Text = (j + 1).ToString();
                            //  listviewItem.Text = arr[0];
                            listviewItem.SubItems.Add(row.GetCell(i++).ToString());
                            listviewItem.SubItems.Add(row.GetCell(i++).ToString());
                            listviewItem.SubItems.Add(row.GetCell(i++).ToString());
                            listviewItem.SubItems.Add(row.GetCell(i++).ToString());
                            listView1.Items.Add(listviewItem);
    
                            // allcell =allcell+ row.GetCell(i).ToString();
                            //  MessageBox.Show(allcell);
                            //  Console.WriteLine(allcell);
                            //输出
                            //  Console.Write($"第{j + 1}行数据:第 {i + 1} 个数据值:{row.GetCell(i).ToString()}");
                        }
                    }
                }
            }
            //向listview 加内容
            private void button2_Click(object sender, EventArgs e)
            {
                //if (txtMsg.Text.Trim().Replace(" ", "") == "")
                //{
                //    MessageBox.Show("备注不能为空值");
                //    return;
                //}
                int i = listView1.Items.Count + 1;
                ListViewItem listItem = listView1.Items.Add(i.ToString());    //((lstList.Items.Count + 1).ToString().Trim());
                listItem.SubItems.Add(textBox1.Text);                                                                              //  listItem.SubItems.Add(dtboxTime.Value.ToString("HH:mm:ss"));
                listItem.SubItems.Add(textBox2.Text);
                listItem.SubItems.Add(textBox3.Text);
                listItem.SubItems.Add(textBox4.Text);
            }
            //把listview 写入到excel
            private void button3_Click(object sender, EventArgs e)
            {
                IWorkbook workbook = new XSSFWorkbook();
                ISheet worksheet = workbook.CreateSheet("工作表");
    
                for (int j = 0; j < listView1.Items.Count; j++)
                {
                    IRow row = worksheet.CreateRow(j);//创建行
                    for (int i = 0; i < listView1.Items[j].SubItems.Count; i++)
                    {
                        row.CreateCell(i).SetCellValue(listView1.Items[j].SubItems[i].Text);
                        //row.CreateCell(i).SetCellValue((j + 1).ToString() + "行" + (i + 1).ToString() + "列" + "的值");
                    }
                }
                //第二行代码和下面两行代码效果相同
                //ICell cell = row.CreateCell(0);
                //cell.SetCellValue("行1列1的单元格的值");
    
                FileStream file = new FileStream(sFilePath, FileMode.Create);
                workbook.Write(file);
                file.Close();
            }
        }
    
    }
    

    展开全文
  • C#读取excel、csv等文件到chart折线图,有详细的代码注释
  • C# 读写 Excel

    2015-10-20 16:42:58
    C# 导入导出Excel,开发环境 vs2010
  • C#读写Excel的4种方案(OpenXml、NPOI、EPPlus、Spire.Office)
  • 主要介绍了C#读取Excel并转化成XML的方法,实例分析了C#操作Excel及XML文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • C#读取Excel源代码.zip

    2020-01-02 17:07:19
    本代码使用纯C#编写,不需要Office Excel Com组件的支持,它的功能包括: 读出在工作簿(workbook)中的所有Worksheet,读出所有WorkSheet中的单元,读取单元的内容,读取单元的格式
  • C# 导入Excel文件到ListView和导出ListView到Excel文件
  • C# 导入Excel读取图片上传
  • C#读取excel文件

    千次阅读 2022-04-16 19:58:58
    C#读取excel文件 读取的是本地的excel文件,读取过程中遇到的问题是外部表不是预期格式的错误如片如下 造成这个错误的原因是因为表格是新版本,然而读取的驱动是老版本导致的,换成新的就好了,下面我把这两种都放...
  • C#读取Excel的方法

    千次阅读 2022-05-30 08:19:11
    方法一:采用OleDB读取EXCEL文件 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: 对于EXCEL中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到 另外:也可进行写入EXCEL...
  • C#读写Excel文件

    2008-12-29 20:52:13
    C#读写Excel文件,详细介绍了#读写Excel文件的各种操作的代码;
  • 1.调用微软office接口 该方式要求客户端必须安装微软office。 、安装微软office 2、将Microsoft.Office.Interop.Excel.dll拷贝到项目框架并引用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,968
精华内容 7,187
关键字:

c#读写excel

友情链接: 卡系统_new.rar