• C# Excel


    1.C#通过NPOI对Excel操作:

    using NPOI.HSSF.UserModel;
    using NPOI.SS.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 通过NPOI进行对Excel操作
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                //
            }
            // 写Excel
            private void button1_Click(object sender, EventArgs e)
            {
                // 创建list集合
                List<Person> list1 = new List<Person>()
                {
                    new Person() {name="n",age=12,email="294623785@qq.com" },
                    new Person() {name="a",age=11,email="29462378@qq.com" },
                    new Person() {name="m",age=10,email="2946237@qq.com" },
                    new Person() {name="e",age=9,email="2946237@qq.com" },
                    new Person() {name="j",age=8,email="294623@qq.com" },
                    new Person() {name="r",age=7,email="29462@qq.com" }
                };
                // 创建工作薄对象
                IWorkbook wkbook = new HSSFWorkbook();
                // 在该工作薄中创建表对象
                ISheet sheet = wkbook.CreateSheet("List for Person");
                // 想对象中插入行和列的信息
                for(int i = 0; i < list1.Count; i++)
                {
                    // 创建行信息
                    IRow row = sheet.CreateRow(i);  // 创建第几行
                    // 创建列(填写列信息)
                    row.CreateCell(0).SetCellValue(list1[i].name);  // 给第0列设置信息
                    row.CreateCell(1).SetCellValue(list1[i].age);  // 给第1列设置信息
                    row.CreateCell(2).SetCellValue(list1[i].email);  // 给第2列设置信息
                    // 上面这三行等价于下面这种写法
                    /*
                    ICell cell = row.CreateCell(0);
                    cell.SetCellValue(list1[i].name);
                    */
                }
                // 写到Excel
                using(FileStream fswrite = File.OpenWrite("list.xls"))
                {
                    wkbook.Write(fswrite);  //工作薄写入的对象是文件流
                }
                MessageBox.Show("写入成功!");
            }
            // 读Excel
            private void button2_Click(object sender, EventArgs e)
            {
                // 获取Excel中的内容
                using(FileStream fsread = File.OpenRead("list.xls"))
                {
                    // 将读取到的文件流的内容放到工作薄中
                    IWorkbook wkbook = new HSSFWorkbook(fsread);
                    // 获取每个工作表Sheet
                    for(int i = 0; i < wkbook.NumberOfSheets; i++)
                    {
                        // 获取每个工作表sheet
                        ISheet sheet = wkbook.GetSheetAt(i);
                        Console.WriteLine("============================================={0}=============================================", sheet.SheetName);  // 打印书工作表的名称
                        // 遍历每个工作表中的行(LastRowNum最后一行的数值)
                        for (int j = 0; j <= sheet.LastRowNum; j++)
                        {
                            // 获取对应行
                            IRow row = sheet.GetRow(j);
                            // 这个LastCellNum不需要等于
                            for (int k = 0; k < row.LastCellNum; k++)
                            {
                                // 获取每个单元格的内容
                                ICell cell = row.GetCell(k);
                                string value = cell.ToString(); // 不区分类型,都以字符串进行输出
                                /*
                                string valueS = cell.StringCellValue;  // 获取string类型
                                bool valueB = cell.BooleanCellValue;  // 获取bool类型
                                // 等等还有其他类型
                                */
                                Console.Write("{0}   |     ", value);
                            }
                            Console.WriteLine();
                        }
                    }
                }
            }
        }
    }
  • 相关阅读:
    是否需要转方向 ?
    资深技术 Leader 曹乐:如何成为技术大牛
    动画:面试如何轻松手写链表?
    如何学算法~
    回溯算法团灭排列/组合/子集问题
    有了这套模板,女朋友再也不用担心我刷不动 LeetCode 了
    二分查找法:在女朋友回家之前可以玩多少个游戏?
    mybatis框架——实战练习——第一个spring boot + mybatis项目——在第一个项目的基础上删除一条记录
    mybatis框架——实战练习——第一个spring boot + mybatis项目——在第一个项目的基础上使用@Select注解查询某条数据
    mybatis框架——实战练习——第一个spring boot + mybatis项目——在第一个项目的基础上添加一条记录
  • 原文地址:https://www.cnblogs.com/namejr/p/11093633.html
Copyright © 2020-2023  润新知