精华内容
下载资源
问答
  • c#写入excel
    千次阅读
    2021-08-02 21:47:38

            生活中我们或多或少要接触excel,那么怎样将excel集成到程序呢?下面我将做一个小demo来实现。

            在c#中我们在Nuget包管理器中搜索NPOI,这是一个操作excel插件,它能够实现不需要借助office就可以生成excel文件,更轻便。

            首先我们需要了解一下excel的一些细节,

    1.workbook:代表excel的工作簿

    2.sheet:代表excel的工作表,一个工作簿包含多个工作表。

    3.Columns:代表excel表格的列

    4.cell:代表excel表格的行

    一下链接我将NPOI包进行了封装,包含了一些基本的excel表的操作方法,包括对表格宽度的调整

    https://download.csdn.net/download/weixin_42145499/20601186

    使用的是由直接将链接内的类库引用即可。

    下面的讲解都依据类库进行。

            首先我们需要建立一个实体类即model,命名为OrderExcelModel,其中设定订单id,订单号,订单金额,订单类型,以及订单来源等数据。其中还重写了tostring方法。

    using Quickuse.Excel;
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Quickuse.ConsoleApp
    {
    	public class OrderExcelModel
    	{
    		[TableColumn("订单主键Id")]
    		public int Id { get; set; }
    		[TableColumnAttribute("订单号")]
    		public string OrderNumber { get; set; }
    		[TableColumnAttribute("订单金额", "金额")]
    		public decimal OrderAmount { get; set; }
    		[TableColumnAttribute("订单类型")]
    		public string OrderType { get; set; }
    		[TableColumnAttribute("订单来源")]
    		public int Source { get; set; }
            public override string ToString()
            {
    			return Id + "\t" + OrderAmount + "\t" + OrderNumber + "\t" + OrderAmount + "\t" + OrderType + "\t" + Source + "\t";
    
    		}
        }
    }
    

    其次我们通过流的方式将数据写入excel文件中,一共六千条数据。

      public static void TestExecl()
            {
                List<OrderExcelModel> list = new List<OrderExcelModel>();
                for (int i = 0; i < 6000; i++)
                {
                    list.Add(new OrderExcelModel
                    {
                        Id = 1,
                        OrderNumber = DateTime.Now.ToString("ACyyyyMMddHHmmssfff"),
                        OrderAmount = 888.88M,
                        OrderType = "电子商品",
                        Source = i
                    });
                }
                using (MemoryStream ms = Workbook.Export(list, "快速应用"))
                {
                    string dir = "../../../../../file/";
                  
                    using (FileStream fs = new FileStream(dir+"quickuse.xls", FileMode.Create))
                    {
                        byte[] buff = ms.ToArray();
                        fs.Write(buff, 0, buff.Length);
                        fs.Close();
                        ms.Close();
                    }
                }
      
            }

    下面我们进行数据的读取。

     public static void testReadExcel(string path)
            {
                var filestream = File.OpenRead(path);
                var dataset = XWorkbook.Import(filestream);
                filestream.Close();
                filestream.Dispose();
                var table = dataset.Tables[0];
                var list2 = XWorkbook.ConvertToList<OrderExcelModel>(table);
                foreach (var d in list2)
                {
                    Console.WriteLine(d.ToString());
                }
                Console.WriteLine("读取成功");
            }

    更多相关内容
  • C# 编写的操作Excel读取/写入动态库(COM/NPOI两种方式),个人推荐使用NPOI方式,因为COM方式存在无法关闭Excel进程的情况(个人体验COM方式效率有点低)。。。已设置0分,资源自取。
  • 将数据写入EXCEL表格中的指定行,然后保存EXCEL
  • C#写入、读取Excel

    2021-01-21 09:40:13
    首先,需要导入支持Excel的com组件或... Excel.Application xApp = new Excel.Application(); string filePath = AppDomain.CurrentDomain.BaseDirectory + "Sample.xlsx"; xApp.Visible = false; //表示是否...

    首先,需要导入支持Excel的com组件或安装Nuget程序包,如Microsoft.Office.Interop.Excel

    //1.创建Application对象
    
            Excel.Application xApp = new Excel.Application();
    
       string filePath = AppDomain.CurrentDomain.BaseDirectory + "Sample.xlsx";
    
       xApp.Visible = false;   //表示是否打开再写入,即出现Excel弹出的情况
    
    //2.得到WorkBook对象,可以用两种方式之一:下面的是打开已有的文件
    
                string filePath = AppDomain.CurrentDomain.BaseDirectory + "Sample.xlsx";
    
                Excel.Workbook xBook = xApp.Workbooks._Open(filePath,
    
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
    
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
    
                Missing.Value, Missing.Value, Missing.Value, Missing.Value);
    
           //Excel.Workbook xBook = xApp.Workbooks.Add(Missing.Value); //新建文件的代码,该方法打开的文件处于锁定状态,只能进行只读操作
    
    //3.指定要操作的sheet,两种方式
    
                Excel.Worksheet xSheet = (Excel.Worksheet)xBook.Sheets[1];
    
                //Excel.Worksheet xSheet = xApp.ActiveSheet;
    
    
    
               
    
        //4.读取数据,通过Range对象
    
                //Excel.Range rng1 = xSheet.get_Range("A1",Type.Missing);
    
                int iRowCount = xSheet.get_Range("A65535",Type.Missing).get_End(Excel.XlDirection.xlUp).Row;
    
               //获取当前已存在的行数
    
                /*//读取,通过Range对象,但使用不同的接口得到Range
    
                Excel.Rangerng2 = (Excel.Range)xSheet.Cells[3, 1];
    
                Console.WriteLine(rng2.Value2);*/
    
    
    
                int[] arr = { 1, 2, 3, 4 };
    
    
    
         //5.写入数据
    
                for (int i = iRowCount; i <= iRowCount+5; i++)
    
                {
    
                    Excel.Range rng2 = xSheet.get_Range("A" + i, Missing.Value);
    
                    rng2.Value2 = arr[0];
    
                    //rng2.Interior.ColorIndex = 2;  //设置Range的背景色
    
                    Excel.Range rng3 = xSheet.get_Range("B" + i, Missing.Value);
    
                    rng3.Value2 = arr[1];
    
                    //rng3.Interior.ColorIndex = 3;  //设置Range的背景色
    
                    Excel.Range rng4 = xSheet.get_Range("C" + i, Missing.Value);
    
                    rng4.Value2 = arr[2];
    
                    //rng4.Interior.ColorIndex = 4;  //设置Range的背景色
    
                    Excel.Range rng5 = xSheet.get_Range("D" + i, Missing.Value);
    
                    rng5.Value2 = arr[3];
    
                    //rng5.Interior.ColorIndex = 6;  //设置Range的背景色
    
                    Excel.Range rng6 = xSheet.get_Range("E" + i, Missing.Value);
    
                    rng6.Value2 = DateTime.Now.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss");
    
                }
    
               
    
               
    
    
    
         //6.保存excel,三种方式
    
                //方式一:保存WorkBook,以已存在的Excel为模板,然后复制在下面的Excel中
    
                /*xBook.SaveAs(filePath(可自定义路径),
    
                                Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value,
    
                                Missing.Value, Missing.Value);*/
    
                //方式二:保存WorkSheet ,以已存在的Excel为模板,然后复制在下面的Excel中
    
                /*xSheet.SaveAs(filePath(可自定义路径),
    
    Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);*/
    
                //方式三
    
                xBook.Save();  //保存当前已存在的文件
    
    
    
     //7.Excel对象退出内存
    
                xSheet = null; //可有可无
    
                xBook = null;  //可有可无
    
                xApp.Quit();   //必须存在,否则会出现Excel一直被打开的问题
    
                xApp = null;   //可有可无

     

    展开全文
  • C#写入模板excel数据

    2022-05-30 13:46:15
    public ReturnNode exportReviewResult() { List repData = new List();... //写入excel return count; } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); return -1; } } } }
            public ReturnNode exportReviewResult()
            {
                List<ReplaceExcelData> repData = new List<ReplaceExcelData>();
                repData.Add(new ReplaceExcelData(3, 2, "名称1"));
                repData.Add(new ReplaceExcelData(3, 7, "单位1"));
                repData.Add(new ReplaceExcelData(3, 14, "单位1"));
                string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
                string tempFileName = localPath + "exporttemp.xlsx";
                string newFile = localPath + fileName;
                using (ExcelHelper excelHelper = new ExcelHelper(newFile))
                {
                    excelHelper.ReplaceDataToExcel(tempFileName,0, repData);
                    return ReturnNode.ReturnSuccess(fileName);
                }
            }
    using NPOI.HSSF.UserModel;
    using NPOI.SS.UserModel;
    using NPOI.XSSF.UserModel;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace YFAPICommon.Libs
    {
        public class ReplaceExcelData
        {
            public int rowIndex { set; get; }
            public int cellIndex { set; get; }
            public object value { set; get; }
            public ReplaceExcelData(int _row,int _cell,object _value)
            {
                this.rowIndex = _row;
                this.cellIndex = _cell;
                this.value = _value;
            }
        }
    
        class ExcelHelper : IDisposable
        {
            private string fileName = null; //文件名
            private NPOI.SS.UserModel.IWorkbook workbook = null;
            private FileStream fs = null;
            private bool disposed;
    
            public ExcelHelper(string fileName)
            {
                this.fileName = fileName;
                disposed = false;
            }
    
    
            public int ReplaceDataToExcel(string tempFilePath,int sheetIndex,List<ReplaceExcelData> replaceData)
            {
                int count = 0;
                ISheet sheet = null;
                fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
    
                using (FileStream tempfs = new FileStream(tempFilePath, FileMode.Open, FileAccess.Read))
                {
                    if (fileName.IndexOf(".xlsx") > 0) // 2007版本
                        workbook = new XSSFWorkbook(tempfs);
                    else if (fileName.IndexOf(".xls") > 0) // 2003版本
                        workbook = new HSSFWorkbook(tempfs);
                }
    
                try
                {
                    if (workbook != null)
                    {
                        sheet = workbook.GetSheetAt(sheetIndex);
                    }
                    else
                    {
                        return -1;
                    }
    
                    foreach(var node in replaceData)
                    {
                        var row = sheet.GetRow(node.rowIndex);
                        var valuestr = node.value.ToString();
                        double valDouble = 0;
                        if(double.TryParse(valuestr,out valDouble))
                        {
                            row.GetCell(node.cellIndex).SetCellValue(valDouble);
                        }
                        else
                        {
                            row.GetCell(node.cellIndex).SetCellValue(valuestr);
                        }
                        count++;
                    }
                    workbook.Write(fs); //写入到excel
                    return count;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception: " + ex.Message);
                    return -1;
                }
            }
    
        }
    }

    展开全文
  • C#读写excel数据详解

    C#如何读取excel表格数据 ,如何向excel写入数据?

    主要步骤包括:

    (1)插件引用

    (2)读写封装代码编写

    (3)方法调用

    详细过程如下:

    一、读取excel表内容

    (1)首先在程序:“引用”右键--点击“管理NuGet程序包”   (我这里是已经引入过了,所以会显示引用中有NPOI)

    (2)在“浏览”处搜索“NPOI”,

    展开全文
  • 实现将excel行数据按行输出到新的excel,并按列展示,开发环境VS2012.可作为转换工具直接使用
  • c#写入excel文件97-03

    2012-03-31 16:44:13
    c#写入excel文件97-03,适用于第一次写入EXCEL。在C盘根目录建个test.xls文件,即可运行。还有项目添加COM引用别忘了。
  • C#写入大量数据到Excel

    2021-11-03 11:31:12
    //写入Excel public void WriteExcel(List<Point3d> oldPoints, List<Point3d> newPoints, string path) { try { //创建文件 StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("gb2312"));...
  • C# 导入Excel文件到ListView和导出ListView到Excel文件
  • 1.生成存放目录 // 文件生成后存放的目录(临时文件存入ChunkUploadTemp目录) var temporaryDirPath = Path.Combine(new VaultFactory().GetBaseDirectory(),ChunkUploadFileBucket); 2.生成表格 ...
  • C#将大量数据批量写入Excel

    千次阅读 2021-02-23 15:40:57
    1、方法一:常规方法,适用于数据量较少,需要写入的列也少的情况,数据量大(列多)时速度非常慢 Microsoft.Office.Interop.Excel.Application xApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); x...
  • C#编程学习49:将数据写入excel

    千次阅读 2022-03-14 16:53:49
    使用C#在本地创建Excel文件,并写入数据
  • c#将数据写入excel导出

    千次阅读 2019-11-14 17:28:13
    1、项目添加引用NPOI包。...2、尝试写一行数据写到excel中并导出。 public static void ExcelTest() { //导出:将数据库中的数据,存储到一个excel中 //1、查询数据库数据 //2、 生成excel ...
  • C#读取写入excel单元格

    千次阅读 2016-08-05 13:40:34
    c# 读取写入excel单元格(包括对excel的一些基本操作) 以下是一些对excel的一些基本操作 1:工程对excel类库的导入,如:c:\program files\Microsoft office\offiece11\excel.exe 2:命名控件的引入: using...
  • C#操作EXCEL EXCEL类库 Excel模板处理 将DataTable数据写入Excel文件 C#数据写入EXCEL EXCEL样式管理帮助类库
  • 我想在excel写入一个值,为什么加了倒数第六-倒数第三行的代码,excel就打不开了 ![图片说明](https://img-ask.csdn.net/upload/201907/16/1563250494_831649.png) ![图片说明]...
  • C#Excel的读写操作

    2012-02-14 21:10:54
    Excel的读取方法网上有很多例子,写入方法不对。此代码可以参考参考。 对于Excel、word等office组件的操作,可以借鉴以前的VBA。 另外,如果不太清楚你需要的操作所对应的方法和属性,可以在office组件中开启宏录制...
  • 内容索引:C#源码,报表打印, 这是一个用C#来操作文件进行读写的实例,比微软官方的Microsoft.Office.Interop.Excel库用起来要简单。这个实例中要用到Interop, Attributes 和 Reflection等类库。
  • C# 将数据写入Excel

    2011-02-24 11:45:52
    exlexlexlexlexlexlexlexlexlexlexlexlexlexlexlexlexlexlexlexlexlexlexl
  • C#读取Excel单元格内容并赋值给text一个简单demo C#读取Excel单元格内容并赋值给text一个简单demo C#读取Excel单元格内容并赋值给text一个简单demo
  • 详细讲述用C#创建excel源代码,以及把数组保存到创建的excel。源码经过VS2008编译通过并成功执行
  • C# 操作Excel 写入数据、图片 是xlsx!
  • C# 将数据写入Excel模板中

    千次阅读 2019-09-16 20:00:17
    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows....using Excel = Mi...
  • 遍历指定目录下所有路径,并把所有路径一一写入指定的excel文件,本源代码两个技术学习:遍历路径、生成并写入excel文件。文件完整,可用可学
  • 实现通过C#语言对EXCEL数据表的读写操作
  • 此源代码用C#语言创建了Excel文档,并进行了读取和写入操作。
  • 内容概要:本资源介绍了如何从利用Npoi库操作Excel,如相关读取单元格、行,介绍了如何对单元格数据格式进行操作,并分享了如何将Datatable数据导入Mysql数据库,方便项目管理。 阅读建议:此资源以如何读取Excel...
  • C#excel输入数据的三个方法,能够快速实现C#EXCEL的输入,大幅提高工作效率

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,942
精华内容 3,576
关键字:

c#写入excel