NPOI读写Excel sheet操作

QueryInfo dataInfo = new QueryInfo();
            dataInfo.CustomSQL = $@"
                            select t1.name name,t1.url url from sys_menu t1
                            start with t1.parent_id =
                            (
                              select t2.id from sys_menu t2 where t2.name =‘交易源数据‘

                            )
                            connect by t1.parent_id=t1.id
                  ";
            var descpsInfo = new QueryInfo();

            var dataTable = Dao.ExcuteDataSet(dataInfo).Tables[0];
            foreach (DataRow row in dataTable.Rows)
            {
                var china_name = row["name"]==null?"":row["name"].ToString();
                var en_name = Holworth.Utility.ListAndTableExtension.ConvertToTableColumnName
                    (row["url"].ToString().Split(‘/‘)[row["url"].ToString().Split(‘/‘).Length - 1].Replace("Manage.aspx", ""));
                descpsInfo.CustomSQL = string.Format(@"
                            select (select t.COMMENTS from all_tab_comments t where t.TABLE_NAME=‘{0}‘ AND t.OWNER=‘NETHRA‘) tComments,
                             tt.TABLE_NAME ,
                            tt.COLUMN_NAME ,
                             (select t2.COMMENTS cComments from all_col_comments t2 where t2.column_name=tt.column_name and t2.OWNER=‘NETHRA‘ AND T2.TABLE_NAME=‘{0}‘) cComments,
                            tt.DATA_TYPE,tt.DATA_LENGTH,tt.DATA_PRECISION from all_tab_columns tt where tt.OWNER=‘NETHRA‘ AND TT.TABLE_NAME=‘{0}‘
                ",en_name);

                //descpsInfo.CustomSQL=string.Format(descpsInfo.CustomSQL,en_name);
                var dic = Dao.ExcuteDataSet(descpsInfo).Tables[0].AsEnumerable().Select
               (
               x => new
               {
                   tableName = x["TABLE_NAME"]==null?"":x["TABLE_NAME"].ToString(),
                   tComments = x["tcomments"]==null?"":x["tcomments"].ToString(),
                   columnsName = x["COLUMN_NAME"]==null?"":x["COLUMN_NAME"].ToString(),
                   cComments = x["cComments"]==null?"":x["cComments"].ToString(),
                   dataType = x["DATA_TYPE"].ToString(),
                   columnDataLength = x["DATA_LENGTH"].ToString(),
                   columnDataPrecious = x["DATA_PRECISION"].ToString(),

               }

               ).ToList();

                //1.创建excel文件
                string file = @"C:\Users\admin\Desktop\本周纪要\3.xlsx";

                XSSFWorkbook workbook = null;
                if (!File.Exists(file))
                {
                    workbook = new XSSFWorkbook();
                }
                else
                {

                    workbook = new XSSFWorkbook(File.OpenRead(file));
                }

                // 新建一个Excel页签
                //1.1创建固定部分前两行

                var sheet = workbook.CreateSheet(china_name);

                IRow row1 = sheet.CreateRow(0); //创建sheet页的第0行(索引从0開始)
                int start = 2;
                //1.1.1表头
                row1.CreateCell(0, CellType.String).SetCellValue("中文表名");
                row1.CreateCell(1, CellType.String).SetCellValue(china_name);
                row1.CreateCell(2, CellType.String).SetCellValue("英文表名");
                row1.CreateCell(3, CellType.String).SetCellValue(en_name);
                row1.CreateCell(4, CellType.String).SetCellValue("主键");
                row1.CreateCell(5, CellType.String).SetCellValue("备注");  //1.1.2列头
                IRow row2 = sheet.CreateRow(1);
                row2.CreateCell(0, CellType.String).SetCellValue("英文名称");
                row2.CreateCell(1, CellType.String).SetCellValue("中文名称");
                row2.CreateCell(2, CellType.String).SetCellValue("数据类型");
                row2.CreateCell(3, CellType.String).SetCellValue("是否为空");
                row2.CreateCell(4, CellType.String).SetCellValue("");
                row2.CreateCell(5, CellType.String).SetCellValue("");  

                using (Stream stream =File.OpenWrite(file))
                {

                    foreach (var item in dic)
                    {
                        var columnName = item.columnsName;
                        var cComment = item.cComments;
                        var cDataType = item.dataType;
                        var cLength = item.columnDataLength;
                        var cPrecious = item.columnDataPrecious;
                        //是否为空需要人判断默认为空
                        IRow tmpRow = sheet.CreateRow(start++);
                        //上述信息写入excel文件
                        tmpRow.CreateCell(0, CellType.String).SetCellValue(columnName);
                        tmpRow.CreateCell(1, CellType.String).SetCellValue(cComment);
                        tmpRow.CreateCell(2, CellType.String).SetCellValue(cDataType);
                        tmpRow.CreateCell(3, CellType.String).SetCellValue("Y");
                        tmpRow.CreateCell(4, CellType.String).SetCellValue("");
                        tmpRow.CreateCell(5, CellType.String).SetCellValue(""); 

                    }
                    start = 2;
                    workbook.Write(stream); //将这个workbook文件写入到stream流中

                }

            }
时间: 2024-12-13 19:04:55

NPOI读写Excel sheet操作的相关文章

使用oledb读写excel出现“操作必须使用一个可更新的查询”的解决办法

使用oledb读写excel出现"操作必须使用一个可更新的查询"的解决办法 转自:http://www.cnblogs.com/Richinger/archive/2008/09/28/1301170.html 前两天使用oledb连接excel的办法为单位某部门从一个excel的多个sheet中作连选抽出需要的数据,程序非常简单,结果很快就出来,原来手工需要很长时间才能选出的结果现在几乎一点击就有了结果.使用人员非常满意,由于是多人使用,开始只是将结果显示在一个页面上.后来他们要求将

C#使用NPOI读写excel

个人比较习惯用NPOI操作excel,方便易理解.在宇宙第一IDE(笑)——VS2017中插入NPOI就很方便: 首先安装NPOI: 然后在.cs文件中加入如下引用: using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; XSSF是用于.xlsx(2007以后版本) HSSF是用于.xls(2007以前版本) 同时我的代码中要用到Datatable,用于存储表格数据 读写文件需要IO usin

npoi读写excel

npoi读取excel方法: 首先下载:npoi.dll 添加引用: //读写excel需要的组建using NPOI.HPSF;using NPOI.HSSF.UserModel;using NPOI.POIFS.FileSystem;using NPOI.HSSF.Util;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.OpenXml4Net; IWorkbook workbook = null;//全局workbo

NPOI对Excel的操作(Sheet转DataTable、List<T>)

1 using System.Collections.Generic; 2 using NPOI.HSSF.UserModel; 3 using NPOI.SS.UserModel; 4 using NPOI.XSSF.UserModel; 5 using System.IO; 6 using System.Data; 7 using System; 8 9 namespace CommonHelper 10 { 11 public class ExcelHelper 12 { 13 14 pu

NPOI读写Excel表格、Word文档

NPOI是从POI移植过来的.NET版本,专门对Word.Excel进行读写操作的一个开源项目 下面就试着怎么用我们的C#来进行读写操作,我现在用的Office版本是2016 我们首先通过Nuget把NPOI引入到我们的项目中 1.读取Excel表格 using(FileStream fs=new FileStream(@"C:\Users\BIDIANQING\Desktop\1.xlsx", FileMode.Open,FileAccess.Read)) { XSSFWorkboo

NPOI 读写Excel

实例功能概述: 1.支持Excel2003以及2007 2.支持Excel读取到DataTable(TableToExcel) 3.支持DataTable导出到Excel(TableToExcel) 4.支持WPF DataGrid导出到Excel(SelectedRowToExcel,AllRowToExcel) using System; using System.Collections.Generic; using System.IO; using System.Linq; using S

NPOI读写Excel——补充

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespace Common.Excel { public static class NPOIHandler { public static DataSet ExcelToDataSet

NPOI 导入Excel和读取Excel

1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 3.POI读取Excel有两种格式一个是HSSF,另一个是XSSF. HSSF和XSSF的区别如下: HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is the

Npoi简单读写Excel

什么是NPOI ? 简而言之,NPOI就是可以在没有Office的情况下对Word或Excel文档进行读写等操作. 使用方式 : 1.准备NPOI的dll文件 下载链接:https://npoi.codeplex.com/releases 2.将下载的dll文件引入项目中 3.引用命名空间     须知: 1.Excel表格分为:WorkBook(工作薄)-> Sheet(工作表) -> 行:Row 单元格:Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始