• C# NPOI读写XLSX文件


    //NPOI读取XLSX格式读取流,需要重新创建流写入

    //nuget:  NPOI 2.4.1
    using NPOI.HSSF.UserModel;
    using NPOI.SS.UserModel;
    using NPOI.XSSF.UserModel;
    using System;
    using System.Data;
    using System.IO;
    
    namespace ExcelExport
    {
        class Program
        {
            static void Main(string[] args)
            {
                string path = @"1.xlsx";
                DataTable dt = GetDataTable();
                DataTableToExcel(dt, path);
            }
    
            private static DataTable GetDataTable()
            {
               var dt = new DataTable("cart");
                DataColumn dc1 = new DataColumn("prizename", Type.GetType("System.String"));
                DataColumn dc2 = new DataColumn("point", Type.GetType("System.Int16"));
                DataColumn dc3 = new DataColumn("number", Type.GetType("System.Int16"));
                DataColumn dc4 = new DataColumn("totalpoint", Type.GetType("System.Int64"));
                DataColumn dc5 = new DataColumn("prizeid", Type.GetType("System.String"));
                DataColumn dc6 = new DataColumn("Timer", Type.GetType("System.DateTime"));
                dt.Columns.Add(dc1);
                dt.Columns.Add(dc2);
                dt.Columns.Add(dc3);
                dt.Columns.Add(dc4);
                dt.Columns.Add(dc5);
                dt.Columns.Add(dc6);
                //以上代码完成了DataTable的构架,但是里面是没有任何数据的
                //Random r = new Random();
                for (int i = 0; i < 10; i++)
                {
                    //int a = r.Next(1, 100);
                    DataRow dr = dt.NewRow();
                    dr["prizename"] = "娃娃" + i;
                    dr["point"] = 10;
                    dr["number"] = i;
                    dr["totalpoint"] = 10;
                    dr["prizeid"] = "001";
                    dr["Timer"] = DateTime.Now.AddDays(i);
                    dt.Rows.Add(dr);
                }
                return dt;
            }
    
            public static bool DataTableToExcel(DataTable dt,string path)
            {
                bool result = false;
                IWorkbook workbook = null;
                FileStream fs = null;
                IRow row = null;
                ISheet sheet = null;
                ICell cell = null;
    
                try
                {
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        using (fs = new FileStream(path, FileMode.Open, FileAccess.ReadWrite))
                        {
                            workbook = new XSSFWorkbook(fs);
                            sheet = workbook.GetSheetAt(0);//创建一个名称为Sheet0的表  
                            int rowCount = dt.Rows.Count;//行数  
                            int columnCount = dt.Columns.Count;//列数  
                            //设置每行每列的单元格,  
                            for (int i = 0; i < rowCount; i++)
                            {
                                row = sheet.CreateRow(i + 9);//从第多少行开始写
                                for (int j = 0; j < columnCount; j++)
                                {
                                    cell = row.CreateCell(j);//excel第二行开始写入数据  
                                    cell.SetCellValue(dt.Rows[i][j].ToString());
                                }
                            }
                            using(var file2 = new FileStream(@"..\2.xlsx", FileMode.Create,FileAccess.ReadWrite)){
                                workbook.Write(file2);
                                file2.Close();
                            }
    
                            workbook.Write(fs);
                            result = true;
                        }
                    }
                    return result;
                }
                catch (Exception ex)
                {
                    if (fs != null)
                    {
                        fs.Close();
                    }
                    return false;
                }
            }
        }
    }
  • 相关阅读:
    .net 操作图片类
    js给关键字加亮加超链接
    Windows.h winUser.h
    最新个人所得税计算
    存在架构 无法删除
    MYSql 乱码前台显示
    RichTextBox 关键字 显示颜色
    Sql 查xls语句
    验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。
    高难度TSQL 问题一道
  • 原文地址:https://www.cnblogs.com/Zingu/p/16071467.html
Copyright © 2020-2023  润新知