精华内容
下载资源
问答
  • C# NPOI 日期格式

    2019-10-07 19:03:46
    之前整理的NPOI导入导出Excel在之前使用过程中没发现问题。...大概是NPOI导入时会大概判断一下Excel文档里面的单元格是什么格式的内容, 有Blank,Boolean,Numeric,String,Error,Formula 等几种, ...

    之前整理的NPOI导入导出Excel 在之前使用过程中没发现问题。

    但是后来发现导入的文档如果有日期时间格式,导入时会有混乱

    后来找了一下解决方案,最终将其中一段修改即可导入日期(导出未测试)

    原因

    大概是NPOI导入时会大概判断一下Excel文档里面的单元格是什么格式的内容,

    有Blank,Boolean,Numeric,String,Error,Formula 等几种,

    但是就是没有日期的,日期的单元格会被判断成Numeric(数字)类型,

    所以日期格式的单元格就按数字类型来取其中的值,

    所以单元格被判断成数字的之后还要再判断一下是否为日期格式。

            /// <summary>
            /// 获取单元格类型
            /// </summary>
            /// <param name="cell"></param>
            /// <returns></returns>
            private static object GetValueType(ICell cell)
            {
                if (cell == null)
                    return null;
                switch (cell.CellType)
                {
                    case CellType.Blank: //BLANK:  
                        return null;
                    case CellType.Boolean: //BOOLEAN:  
                        return cell.BooleanCellValue;
                    case CellType.Numeric: //NUMERIC:  
                        short format = cell.CellStyle.DataFormat;
                        if (format != 0) { return cell.DateCellValue; } else { return cell.NumericCellValue; }
                    case CellType.String: //STRING:  
                        return cell.StringCellValue;
                    case CellType.Error: //ERROR:  
                        return cell.ErrorCellValue;
                    case CellType.Formula: //FORMULA:  
                    default:
                        return "=" + cell.CellFormula;
                }
            }

     

    注意

     使用时Excel里的长数字类型,否则这类数据可能会被误判为日期类型

    如:0000123,2017001等这类型的需要处理一下单元格格式->设置成"常规"类型

    转载请注明出处,by lazyneal 2017

    转载于:https://www.cnblogs.com/lazyneal/p/6795941.html

    展开全文
  • NPOI 汇出Excel using System; using System.Collections.Generic; using System.Text; using System.IO; using NPOI; using NPOI.HPSF; using NPOI.HSSF; using NPOI.HSSF.UserModel; using System.Data; ...

    NPOI 汇出Excel

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using NPOI;
    using NPOI.HPSF;
    using NPOI.HSSF;
    using NPOI.HSSF.UserModel;
    using System.Data;
    
    namespace StarTech.NPOI
    {
        /// <summary>
        /// Excel生成操作类
        /// </summary>
        public class NPOIHelper
        {
            /// <summary>
            /// 导出列名
            /// </summary>
            public static System.Collections.SortedList ListColumnsName;
            /// <summary>
            /// 导出Excel
            /// </summary>
            /// <param name="dgv"></param>
            /// <param name="filePath"></param>
            public static void ExportExcel(DataTable dtSource, string filePath)
            {
                if (ListColumnsName == null || ListColumnsName.Count == 0)
                    throw (new Exception("请对ListColumnsName设置要导出的列明!"));
    
                HSSFWorkbook excelWorkbook = CreateExcelFile();
                InsertRow(dtSource, excelWorkbook);
                SaveExcelFile(excelWorkbook, filePath);
            }
            /// <summary>
            /// 导出Excel
            /// </summary>
            /// <param name="dgv"></param>
            /// <param name="filePath"></param>
            public static void ExportExcel(DataTable dtSource, Stream excelStream)
            {
                if (ListColumnsName == null || ListColumnsName.Count == 0)
                    throw (new Exception("请对ListColumnsName设置要导出的列明!"));
    
                HSSFWorkbook excelWorkbook = CreateExcelFile();
                InsertRow(dtSource, excelWorkbook);
                SaveExcelFile(excelWorkbook, excelStream);
            }
            /// <summary>
            /// 保存Excel文件
            /// </summary>
            /// <param name="excelWorkBook"></param>
            /// <param name="filePath"></param>
            protected static void SaveExcelFile(HSSFWorkbook excelWorkBook, string filePath)
            {
                FileStream file = null;
                try
                {
                    file = new FileStream(filePath, FileMode.Create);
                    excelWorkBook.Write(file);
                }
                finally
                {
                    if (file != null)
                    {
                        file.Close();
                    }
                }
            }
            /// <summary>
            /// 保存Excel文件
            /// </summary>
            /// <param name="excelWorkBook"></param>
            /// <param name="filePath"></param>
            protected static void SaveExcelFile(HSSFWorkbook excelWorkBook, Stream excelStream)
            {
                try
                {
                    excelWorkBook.Write(excelStream);
                }
                finally
                {
    
                }
            }
            /// <summary>
            /// 创建Excel文件
            /// </summary>
            /// <param name="filePath"></param>
            protected static HSSFWorkbook CreateExcelFile()
            {
                HSSFWorkbook hssfworkbook = new HSSFWorkbook();
                return hssfworkbook;
            }
            /// <summary>
            /// 创建excel表头
            /// </summary>
            /// <param name="dgv"></param>
            /// <param name="excelSheet"></param>
            protected static void CreateHeader(HSSFSheet excelSheet)
            {
                int cellIndex = 0;
                HSSFRow newRow = (HSSFRow)excelSheet.CreateRow(0);
                //循环导出列
                foreach (System.Collections.DictionaryEntry de in ListColumnsName)
                {
                    HSSFCell newCell = (HSSFCell)newRow.CreateCell(cellIndex);
                    newCell.SetCellValue(de.Value.ToString());
                    cellIndex++;
                }
            }
            /// <summary>
            /// 插入数据行
            /// </summary>
            protected static void InsertRow(DataTable dtSource, HSSFWorkbook excelWorkbook)
            {
                int rowCount = 0;
                int sheetCount = 1;
                HSSFSheet newsheet = null;
    
                //循环数据源导出数据集
                newsheet = (HSSFSheet)excelWorkbook.CreateSheet("Sheet" + sheetCount);
                CreateHeader(newsheet);
                foreach (DataRow dr in dtSource.Rows)
                {
                    rowCount++;
                    //超出10000条数据 创建新的工作簿
                    if (rowCount == 10000)
                    {
                        rowCount = 1;
                        sheetCount++;
                        newsheet = (HSSFSheet)excelWorkbook.CreateSheet("Sheet" + sheetCount);
                        CreateHeader(newsheet);
                    }
    
                    HSSFRow newRow = (HSSFRow)newsheet.CreateRow(rowCount);
                    InsertCell(dtSource, dr, newRow, newsheet, excelWorkbook);
                }
            }
            /// <summary>
            /// 导出数据行
            /// </summary>
            /// <param name="dtSource"></param>
            /// <param name="drSource"></param>
            /// <param name="currentExcelRow"></param>
            /// <param name="excelSheet"></param>
            /// <param name="excelWorkBook"></param>
            protected static void InsertCell(DataTable dtSource, DataRow drSource, HSSFRow currentExcelRow, HSSFSheet excelSheet, HSSFWorkbook excelWorkBook)
            {
                for (int cellIndex = 0; cellIndex < ListColumnsName.Count; cellIndex++)
                {
                    //列名称
                    string columnsName = ListColumnsName.GetKey(cellIndex).ToString();
                    HSSFCell newCell = null;
                    System.Type rowType = drSource[columnsName].GetType();
                    string drValue = drSource[columnsName].ToString().Trim();
                    switch (rowType.ToString())
                    {
                        case "System.String"://字符串类型
                            drValue = drValue.Replace("&", "&");
                            drValue = drValue.Replace(">", ">");
                            drValue = drValue.Replace("<", "<");
                            newCell = (HSSFCell)currentExcelRow.CreateCell(cellIndex);
                            newCell.SetCellValue(drValue);
                            break;
                        case "System.DateTime"://日期类型
                            DateTime dateV;
                            DateTime.TryParse(drValue, out dateV);
                            newCell = (HSSFCell)currentExcelRow.CreateCell(cellIndex);
                            newCell.SetCellValue(dateV);
    
                            //格式化显示
                            HSSFCellStyle cellStyle = (HSSFCellStyle)excelWorkBook.CreateCellStyle();
                            HSSFDataFormat format = (HSSFDataFormat)excelWorkBook.CreateDataFormat();
                            cellStyle.DataFormat = format.GetFormat("yyyy-mm-dd hh:mm:ss");
                            newCell.CellStyle = cellStyle;
    
                            break;
                        case "System.Boolean"://布尔型
                            bool boolV = false;
                            bool.TryParse(drValue, out boolV);
                            newCell = (HSSFCell)currentExcelRow.CreateCell(cellIndex);
                            newCell.SetCellValue(boolV);
                            break;
                        case "System.Int16"://整型
                        case "System.Int32":
                        case "System.Int64":
                        case "System.Byte":
                            int intV = 0;
                            int.TryParse(drValue, out intV);
                            newCell = (HSSFCell)currentExcelRow.CreateCell(cellIndex);
                            newCell.SetCellValue(intV.ToString());
                            break;
                        case "System.Decimal"://浮点型
                        case "System.Double":
                            double doubV = 0;
                            double.TryParse(drValue, out doubV);
                            newCell = (HSSFCell)currentExcelRow.CreateCell(cellIndex);
                            newCell.SetCellValue(doubV);
                            break;
                        case "System.DBNull"://空值处理
                            newCell = (HSSFCell)currentExcelRow.CreateCell(cellIndex);
                            newCell.SetCellValue("");
                            break;
                        default:
                            throw (new Exception(rowType.ToString() + ":类型数据无法处理!"));
                    }
                }
            }
        }
        //排序实现接口 不进行排序 根据添加顺序导出
        public class NoSort : System.Collections.IComparer
        {
            public int Compare(object x, object y)
            {
                return -1;
            }
        }
    }
    

    调用方法

     DataTable dt=null;
                string sql = "sql语句";
                string str ="连接字符串"
                using (SqlDataAdapter adapter = new SqlDataAdapter(sql,str))
                {
                    dt = new DataTable(); 
                    adapter.Fill(dt);
                }
                using (BaseDBContext db =new BaseDBContext())
                {
                    //导出数据列 通过EF反射添加列名
                    StarTech.NPOI.NPOIHelper.ListColumnsName = new SortedList(new StarTech.NPOI.NoSort());
                    Dao.Entity.User u = new User();
                    foreach (PropertyInfo p in u.GetType().GetProperties())
                    {
                        StarTech.NPOI.NPOIHelper.ListColumnsName.Add(p.Name, p.Name);
                    }
                    Response.Clear();
                    Response.BufferOutput = false;
                    Response.ContentEncoding = System.Text.Encoding.UTF8;
                    string filename = HttpUtility.UrlEncode(DateTime.Now.ToString("在线用户yyyyMMdd"));
                    Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + ".xlsx");
                    Response.ContentType = "application/ms-excel";
                    StarTech.NPOI.NPOIHelper.ExportExcel(dt, Response.OutputStream);
                    Response.Close();
    
    展开全文
  • NPOI时间格式判断

    2017-12-14 17:53:00
    switch (cell.CellType) { case CellType.BLANK: //空数据类型处理 dr[iRow] = ""; break; case CellType.STRING: //字符串类型 dr[iRow] = cell.... case CellType.NUMERIC: //数字类型 if (DateUtil.IsValidEx...

    switch (cell.CellType) { case CellType.BLANK: //空数据类型处理 dr[iRow] = ""; break; case CellType.STRING: //字符串类型 dr[iRow] = cell.StringCellValue; break; case CellType.NUMERIC: //数字类型 if (DateUtil.IsValidExcelDate(cell.NumericCellValue)) { dr[iRow] = cell.DateCellValue; } else { dr[iRow] = cell.NumericCellValue; } break; case CellType.FORMULA: HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(hssfworkbook); dr[iRow] = e.Evaluate(cell).StringValue; break; default: dr[iRow] = ""; break; }

    转载于:https://www.cnblogs.com/qbz95/p/8039003.html

    展开全文
  • NPOI 单元格格式设置

    万次阅读 2014-07-24 14:18:54
     ////在设置字体之前,我们首先要做的就是创建字体对象,这和创建数字格式很相似。   //HSSFFont font8 = hssfworkbook.CreateFont();   ////这句话会在Excel文件内部创建相应的FontRecord,所以你...

    自动换行   
                自动换行翻译成英文其实就是Wrap的意思,所以这里我们应该用WrapText属性,这是一个布尔属性   
                //style6.WrapText = true;   
                文本缩进   
                这是一个不太引人注意的选项,所以这里给张图出来,让大家知道是什么,缩进说白了就是文本前面的空白,我们同样可以用属性来设置,   
                这个属性叫做Indention。   
                //style6.Indention = 3;   
                文本旋转   
                文本方向大家一定在Excel中设置过,上图中就是调整界面,主要参数是度数,那么我们如何在NPOI中设置呢?  
                //style6.Rotation=(short)90;   
                以上代码是把单元格A1中的文本逆时针旋转90度   
                ///*   
                // * 请注意,这里的Rotation取值是从-90到90,而不是0-180度。   
                // * 最后别忘了把样式变量style赋给HSSFCellStyle.CellStyle,否则就前功尽弃了,呵呵!   
                // * **/   
                //#endregion   
                //#region 7.设置单元格边框   
                *************************************设置单元格边框******************************************   
                边框和其他单元格设置一样也是在HSSFCellStyle上操作的,HSSFCellStyle有2种和边框相关的属性,分别是:   
                边框相关属性 说明 范例    
                Border+方向 边框类型 BorderTop, BorderBottom,BorderLeft, BorderRight    
                方向+BorderColor 边框颜色 TopBorderColor,BottomBorderColor, LeftBorderColor, RightBorderColor    

                其中边框类型分为以下几种:   
                边框范例图 对应的静态值    
                HSSFCellStyle.BORDER_DOTTED    
                HSSFCellStyle.BORDER_HAIR    
                HSSFCellStyle.BORDER_DASH_DOT_DOT    
                HSSFCellStyle.BORDER_DASH_DOT    
                HSSFCellStyle.BORDER_DASHED    
                HSSFCellStyle.BORDER_THIN    
                HSSFCellStyle.BORDER_MEDIUM_DASH_DOT_DOT    
                HSSFCellStyle.BORDER_SLANTED_DASH_DOT    
                HSSFCellStyle.BORDER_MEDIUM_DASH_DOT    
                HSSFCellStyle.BORDER_MEDIUM_DASHED    
                HSSFCellStyle.BORDER_MEDIUM    
                HSSFCellStyle.BORDER_THICK    
                HSSFCellStyle.BORDER_DOUBLE    
                至于颜色那就很多了,全部在HSSFColor下面,如HSSFColor.GREEN, HSSFColor.RED,都是静态实例,可以直接引用。   
                下面我们假设我们要把一个单元格的四周边框都设置上,可以用下面的代码:  

                //HSSFSheet sheet7 = hssfworkbook.CreateSheet("设置单元格边框");   
                Create a row and put some cells in it. Rows are 0 based.   
                //HSSFRow row7 = sheet7.CreateRow(1);   
                Create a cell and put a value in it.   
                //HSSFCell cell7 = row7.CreateCell(1);   
                Style the cell with borders all around.   
                //HSSFCellStyle style7 = hssfworkbook.CreateCellStyle();   
                //style7.BorderBottom= HSSFCellStyle.BORDER_THIN;   
                //style7.BorderLeft= HSSFCellStyle.BORDER_THIN;   
                //style7.BorderRight= HSSFCellStyle.BORDER_THIN;   
                //style7.BorderTop = HSSFCellStyle.BORDER_THIN ;   
                //cell7.CellStyle= style7;   
                这段代码使用了最普通的细边框,使得这个单元格看上去像块空心砖头。   
                注意:这里我们没有设置边框的颜色,但这不会影响最终的效果,因为Excel会用默认的黑色给边框上色。   
                如果要设置颜色的话,也很简单,如下:   
                //style7.BottomBorderColor = HSSFColor.GREEN.index;   
                以上代码将底部边框设置为绿色,要注意,不是直接把HSSFColor.GREEN赋给XXXXBorderColor属性,而是把index的值赋给它。   
                //#endregion   


                //#region 8.设置单元格字体   
                *************************************设置单元格字体******************************************   
                本节我们将继续使用NPOI来设置单元格格式,这一节我们主要讲如何设置“字体”。   
                在设置字体之前,我们首先要做的就是创建字体对象,这和创建数字格式很相似。   

                //HSSFFont font8 = hssfworkbook.CreateFont();   
                这句话会在Excel文件内部创建相应的FontRecord,所以你不用客户因为自己机器上的Excel没有相应的字体设置而导致设置丢失。   

                字体在设置完成后,我们就可以把它赋给单元格样式,代码如下:   
                //HSSFSheet sheet8 = hssfworkbook.CreateSheet("设置单元格字体");   
                //HSSFRow row8 = sheet8.CreateRow(0);   
                //HSSFCell cell8 = row8.CreateCell(0);   
                //HSSFCellStyle style8 = hssfworkbook.CreateCellStyle();   
                //style8.SetFont(font8);   
                //cell8.CellStyle=style8;   
                这里的cell1是HSSFCell的一个实例。   

                好了,下面我们就开始对字体进行设置。   
                字体名称  

                这里的字体名称是通过HSSFFont.FontName进行设置的,至于具体的名称,只要是常用字体都可以,比如说Arial, Verdana等   
                ,当然也可以是中文字体名,如宋体、黑体等。不过设置字体名称有个前提,那就是假设打开这个xls文件的客户机上有这种字体   
                ,如果没有,Excel将使用默认字体。   
                下面就是设置字体名称为“宋体”的代码:   
                //font8.FontName = "宋体";   


                字号   
                与字号有关的属性有两个,一个是FontHeight,一个是FontHeightInPoints。区别在于,FontHeight的值是FontHeightInPoints的20倍   
                ,通常我们在Excel界面中看到的字号,比如说12,对应的是FontHeightInPoints的值,而FontHeight要产生12号字体的大小   
                ,值应该是240。所以通常建议你用FontHeightInPoint属性。   
                如果要设置字号为12,代码就是   
                //font8.FontHeightInPoints = 12;   
                    

                字体颜色   
                这里可能会与CellStyle上的ForegroundColor和BackgroundColor产生混淆,其实所有的字体颜色都是在HSSFFont的实例上设置的   
                ,CellStyle的ForegroundColor和BackgroundColor分别指背景填充色和填充图案的颜色,和文本颜色无关。   
                要设置字体颜色,我们可以用HSSFFont.Color属性,颜色可以通过HSSFColor获得,代码如下所示:   
                //font8.Color = HSSFColor.RED.index;   
                这行代码把文本设置为红色。   
                    

                下划线   
                通常我们所说的下划线都是单线条的,其实Excel支持好几种下划线,如下所示:   
                类型 对应的值    
                单下划线 HSSFFont.U_SINGLE    
                双下划线 HSSFFont.U_DOUBLE    
                会计用单下划线 HSSFFont.U_SINGLE_ACCOUNTING    
                会计用双下划线 HSSFFont.U_DOUBLE_ACCOUNTING    
                无下划线 HSSFFont.U_NONE    
                当你要设置下划线时,可以用HSSFFont.Underline属性,这是一个byte类型的值,例如   
                //font8.Underline = HSSFFont.U_SINGLE;   
                这行代码就是设置单下划线的代码。   


                上标下标   
                设置这东西可以用HSSFFont.TypeOffset属性,值有以下几种:   
                TypeOffset的值 说明    
                HSSFFont.SS_SUPER 上标    
                HSSFFont.SS_SUB 下标    
                HSSFFont.SS_NONE 普通,默认值    
                所以如果你要上标的话,可以用下面的代码:   
                //font8.TypeOffset=HSSFFont.SS_SUPER;   


                删除线   
                设置这东西可以用HSSFFont.IsStrikeout属性,当为true时,表示有删除线;为false则表示没有删除线。   
                //#endregion   


                //#region 9.设置单元格的背景和图案   
                *************************************设置单元格的背景和图案******************************************   
                在之前的教程中,我们已经提到HSSFCellStyle有两个背景颜色属性,一个叫FillBackgroundColor,另一个叫FillForegroundColor   
                ,但其实这指的都是背景颜色,那为什么还有ForegroundColor呢?为了能够帮助大家理解,我们举一个实际的例子   
                ,下面这个图案是Excel的一个单元格:(白线红格的网格)   
                线是白色的,背景是红色的。这里的线其实就是下面的Excel界面中的图案:   
                至于线的颜色则是图案颜色,即白色。   
                所以以上单元格如果要用NPOI来设置就可以用以下代码完成:   
                fill background   
                //HSSFSheet sheet9 = hssfworkbook.CreateSheet("设置单元格的背景和图案");   
                //HSSFCellStyle style9 = hssfworkbook.CreateCellStyle();   
                //style9.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.WHITE.index;   
                //style9.FillPattern = HSSFCellStyle.SQUARES;   
                //style9.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.RED.index;   
                //sheet9.CreateRow(7).CreateCell(0).CellStyle = style9;   
                现在是不是清楚一些了,这里的FillPattern就图案样式,所有的枚举值都是HSSFCellStyle的常量;FillForegroundColor就是图案的颜色   
                ,而FillBackgroundColor则是背景的颜色,即红色。   
                //#endregion   


                //#region 10.设置单元格的宽度和高度   
                *************************************设置单元格的宽度和高度******************************************   
                在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致。所以要设置单元格的宽度   
                ,我们就得从列的宽度下手,HSSFSheet有个方法叫SetColumnWidth,共有两个参数:一个是列的索引(从0开始),一个是宽度。   
                现在假设你要设置B列的宽度,就可以用下面的代码:   
                HSSFWorkbook hssfworkbook = new HSSFWorkbook();   
                //HSSFSheet sheet10 = hssfworkbook.CreateSheet("设置单元格的宽度和高度");   
                //sheet10.SetColumnWidth(1, 100 * 256);   
                这里你会发现一个有趣的现象,SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度   
                ,也就是说,这里是把B列的宽度设置为了100个字符。   
                刚才说的是如何设置,那如何去读取一个列的宽度呢?直接用GetColumnWidth方法,这个方法只有一个参数,那就是列的索引号。如下所示:   
                //int col1width = sheet10.GetColumnWidth(1);   
                说完宽度,我们来说高度,在Excel中,每一行的高度也是要求一致的,所以设置单元格的高度,其实就是设置行的高度   
                ,所以相关的属性也应该在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点   
                ,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。   
                要设置第一行的高度,可以用如下代码:   
                //sheet10.CreateRow(0).Height = 200*20;   
                或者   
                //sheet10.CreateRow(0).HeightInPoints = 200;   
                如果要获得某一行的行高,可以直接拿HSSFRow.Height属性的返回值。   
                你可能觉得一行一行设置行高或者一列一列设置列宽很麻烦,那你可以考虑使用HSSFSheet.DefaultColumnWidth   
                、HSSFSheet.DefaultRowHeight和HSSFSheet.DefaultRowHeightInPoints属性。   
                一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。代码如下:   
                //sheet10.DefaultColumnWidth=100*256;   
                //sheet10.DefaultRowHeight=30*20;   
                //#endregion   


                把HSSFWorkbook实例写入文件   
                //FileStream file = new FileStream(Server.MapPath("test.xls"), FileMode.Create);   
                //hssfworkbook.Write(file);   
                //file.Close();   


                //*************************************基于模板******************************************   
                //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock.   
                //book1.xls is an Excel-2007-generated file, so some new unknown BIFF records are added.    
                FileStream file11 = new FileStream(Server.MapPath("PayMain.xls"), FileMode.Open, FileAccess.Read);   

                HSSFWorkbook hssfworkbook11 = new HSSFWorkbook(file11);   
                HSSFSheet sheet11 = hssfworkbook11.GetSheet("Sheet2");   
                HSSFCellStyle style11 = hssfworkbook11.CreateCellStyle();   
                style11.BorderBottom = HSSFCellStyle.BORDER_THIN;   
                style11.BorderLeft = HSSFCellStyle.BORDER_THIN;   
                style11.BorderRight = HSSFCellStyle.BORDER_THIN;   
                style11.BorderTop = HSSFCellStyle.BORDER_THIN;   
                HSSFRow row11;   
                for (int i = 0; i < dt.Rows.Count; i++)   
                {   
                    row11 = sheet11.CreateRow(7 + i);   
                    for (int j = 0; j < 6; j++)   
                    {   
                        HSSFCell cell11 = row11.CreateCell(j);   
                        cell11.SetCellValue(dt.Rows[i][j].ToString());   
                        cell11.CellStyle = style11;   
                    }   
                }   

                row11 = sheet11.CreateRow(dt.Rows.Count + 7);   
                HSSFCell cell11_ = row11.CreateCell(0);   
                cell11_.SetCellValue("合计:");   
                cell11_ = row11.CreateCell(3);   
                cell11_.SetCellValue("建表人:");   
                //HSSFRow row11 = sheet11.CreateRow(7);   
                //HSSFCell cell10 = row11.CreateCell(0);   
                //HSSFCell cell11 = row11.CreateCell(1);   
                //HSSFCell cell12 = row11.CreateCell(2);   
                //HSSFCell cell13 = row11.CreateCell(3);   
                //HSSFCell cell14 = row11.CreateCell(4);   
                //HSSFCell cell15 = row11.CreateCell(5);   
                //cell10.SetCellValue("tessssss");   
                //cell11.SetCellValue("teffffff");   
                //cell12.SetCellValue("tegggggsss");   
                //cell13.SetCellValue("tesssssfwefsss");   
                //cell14.SetCellValue("tesssssfwefsss");   
                //cell15.SetCellValue("tesssssfwefsss");   
                //sheet11.GetRow(9).GetCell(0).SetCellValue(300);   
                //sheet11.GetRow(10).GetCell(1).SetCellValue(500050);   
                //sheet11.GetRow(11).GetCell(1).SetCellValue(8000);   
                //sheet11.GetRow(12).GetCell(1).SetCellValue(110);   
                //sheet11.GetRow(13).GetCell(1).SetCellValue(100);   
                //sheet11.GetRow(14).GetCell(1).SetCellValue(200);   
                //sheet11.GetRow(15).GetCell(1).SetCellValue(210);   
                //sheet11.GetRow(16).GetCell(1).SetCellValue(2300);   
                //sheet11.GetRow(17).GetCell(1).SetCellValue(240);   
                //sheet11.GetRow(18).GetCell(1).SetCellValue(180123);   
                //sheet11.GetRow(19).GetCell(1).SetCellValue(150);   

                //Force excel to recalculate all the formula while open   
                Response.ContentType = "application/vnd.ms-excel";   
                Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "T3"));   
                Response.Clear();   

                DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();   
                dsi.Company = "NPOI Team";   
                hssfworkbook.DocumentSummaryInformation = dsi;   

                create a entry of SummaryInformation   
                SummaryInformation si = PropertySetFactory.CreateSummaryInformation();   
                si.Subject = "NPOI SDK Example";   
                hssfworkbook11.SummaryInformation = si;   

                MemoryStream file = new MemoryStream();   
                hssfworkbook11.Write(file);   
                Response.BinaryWrite(file.GetBuffer());   
                Response.End();   



                //sheet11.ForceFormulaRecalculation = true;    
                //FileStream file111 = new FileStream(Server.MapPath("T2.xls"), FileMode.Create);    
                //hssfworkbook11.Write(file111);   
                //file111.Close();  

    展开全文
  • NPOI设置单元格数字格式

    千次阅读 2020-01-13 17:38:40
    Imports System.Collections.Generic Imports System.Linq Imports System.Text Imports System.Threading....Imports NPOI.HSSF.UserModel Imports NPOI.SS.Formula.Eval Imports NPOI.SS.Formula.Functions Im...
  • NPOI设置单元格格式

    2021-07-13 19:57:46
    NPOI设置单元格格式
  • NPOI 设置单元格格式

    2019-07-15 11:08:49
    转载:...NPOI 设置单元格格式 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NPOI.HSS...
  • NPOI 设置EXCEL单元格格式数值

    万次阅读 2016-10-26 11:56:10
    NPOI设置EXCEL单元格格式数值,网上有很多信息,但并没有实际解决问题的方法。 实际上EXCEL的格式设置很简单,只要将样式对象的DataFormat属性设置为194即可,代码如下: #region 普通样式-靠右 // 设置边框 ...
  • 看了网上好多帖子,都是保留两位小数的,写法是:  HSSFDataFormat.GetBuiltinFormat(&...说实话,从这里就开始入坑了,活生生被这个坑死了,导出来的,比如是数字:17.88,还是17.88,并没有补全为17.8800;看起...
  • NPOI读取Excel设置单元格格式数值不生效问题
  • using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NPOI.HSSF.UserModel;...using NPOI.SS.Formula.Eval;...using NPOI.SS.Formula.Functi...
  • npoi 设置单元格格式

    2017-10-19 13:23:00
    using System; using System.Collections.Generic; using System.Linq; using System.Text;...using System.Threading.Tasks;...using NPOI.HSSF.UserModel;...using NPOI.SS.Formula.Eval;...using NPOI.SS.Formul...
  • 能看到这篇文章,相信大家都搜到过这样的写法: cell.setCellValue(20000); HSSFCellStyle cellStyle = demoWorkBook.createCellStyle(); HSSFDataFormat format= demoWorkBook.createDataFormat();...
  • //使用NPOI导入Excel public static DataTable importExcelToDataSetUsingNPOI(string FilePath, string fileName) { DataSet myDs = new DataSet(); DataTable dt = new DataTable("myta...
  • NPOI导出Excel百分比格式

    千次阅读 2019-05-29 09:20:58
    NPOI导出Excel百分比格式 public int DataTableToExcel(string fileName, DataTable[] datas, bool isColumnWritten) { ISheet sheet = null; FileStream fs = new FileStream(fi...
  • NPOI

    2019-09-29 12:45:57
    概述 NPOI,顾名思义,就是POI 的.NET 版本。POI 是一套用Java 写成的库,能够帮助开发者在没有安装微软Office 的情况下...NPOI.POIFS: OLE2 格式读写库 NPOI.DDF: Microsoft Drawing格式读写库 NPOI.SS: Excel...
  • 下载地址 ...下面放一个 NPOIHelper 助手类吧,也不是我写的… NpoiExcelHelper 可以生成xlsx格式public class ExcelNpoiHelper { //private static WriteLog wl = new WriteLog(); ...
  • 最近做项目需要导入一部分数据, 导入的数据的中, 有部分的百分比数据使用的是excel 的百分比, 有部分的数据使用的是字符串形式的格式,(数据来源于不同的人统计), 格式略微有点乱, 要求导入系统的时候, 将所有百分比...
  • NPOI 读Excel 日期格式

    2018-08-28 16:14:00
    如果直接使用下面的方式读取的时间格式,是一串数字 string unit = cell.ToString(); 比如excel中的时间是 2017/1/20 10:20:21 上面的方式读取出来后是这样的格式:1/20/17 10:20:21 突然想到,是不是可以...
  • NPOI之Excel——自动筛选、数字格式

    千次阅读 2016-01-14 11:53:45
    最新导出数据需要使用Excel的筛选功能,网上多方查找,终于在一个繁体的网站上找到了方法,呃,这个网站还是Java的,讲的是POI,不过.NET的NPOI也就一样用了。 CellRangeAddress c = CellRangeAddress.ValueOf("A1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,800
精华内容 720
关键字:

npoi数字格式