下载npoi2.0.1dll文件:http://download.csdn.net/detail/pukuimin1226/5851747

public static void test1()
       {
           NpoiHelper np = new NpoiHelper();
           DataTable dt1 = np.ReadExcel(AppDomain.CurrentDomain.BaseDirectory + "1测试数据.xls", 2).Tables[0];//读2003格式数据
           DataSet ds1 = new DataSet();
           ds1.Tables.Add(dt1.Copy());
           ds1.AcceptChanges();
           string SaveFileName = "output1.xls";
           np.CreateExcel2003(SaveFileName, "sheet001", ds1, 0);//写2003格式数据
       }
       public static void test2()
       {
           NpoiHelper np = new NpoiHelper();
           DataTable dt1 = np.ReadExcel(AppDomain.CurrentDomain.BaseDirectory + "2测试数据.xlsx", 2).Tables[0];//读2007格式数据
           DataSet ds1 = new DataSet();
           ds1.Tables.Add(dt1.Copy());
           ds1.AcceptChanges();

string SaveFileName = "output2.xlsx";
           np.CreateExcel2007(SaveFileName, "sheet001", ds1, 0);//写2007格式数据
           Console.ReadKey();
       }

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using NPOI.HSSF.UserModel;

using System.Data;

using System.Collections;

using System.Drawing;

using NPOI.HSSF.Util;

using NPOI.SS.UserModel;

using NPOI.HPSF;

using NPOI.XSSF.UserModel;

namespace Tools.Common

{

   /// <summary>

   /// Excel文件到DataSet的转换类

   /// </summary>

   public class NpoiHelper

   {

       #region 读取Excel文件内容转换为DataSet

       /// <summary>

       /// 读取Excel文件内容转换为DataSet,列名依次为 "c0"……c[columnlength-1]

       /// </summary>

       /// <param name="FileName">文件绝对路径</param>

       /// <param name="startRow">数据开始行数(1为第一行)</param>

       /// <param name="ColumnDataType">每列的数据类型</param>

       /// <returns></returns>

       public DataSet ReadExcel(string FileName, int startRow, params NpoiDataType[] ColumnDataType)

       {

           int ertime = 0;

           int intime = 0;

           DataSet ds = new DataSet("ds");

           DataTable dt = new DataTable("dt");

           DataRow dr;

           StringBuilder sb = new StringBuilder();

           using (FileStream stream = new FileStream(@FileName, FileMode.Open, FileAccess.Read))

           {

               IWorkbook workbook = WorkbookFactory.Create(stream);//使用接口,自动识别excel2003/2007格式

               ISheet sheet = workbook.GetSheetAt(0);//得到里面第一个sheet

               int j;

               IRow row;

               #region ColumnDataType赋值

               if (ColumnDataType.Length <= 0)

               {

                   row = sheet.GetRow(startRow - 1);//得到第i行

                   ColumnDataType = new NpoiDataType[row.LastCellNum];

                   for (int i = 0; i < row.LastCellNum; i++)

                   {

                       ICell hs = row.GetCell(i);

                       ColumnDataType[i] = GetCellDataType(hs);

                   }

               }

               #endregion

               for (j = 0; j < ColumnDataType.Length; j++)

               {

                   Type tp = GetDataTableType(ColumnDataType[j]);

                   dt.Columns.Add("c" + j, tp);

               }

               for (int i = startRow - 1; i <= sheet.PhysicalNumberOfRows; i++)

               {

                   row = sheet.GetRow(i);//得到第i行

                   if (row == null) continue;

                   try

                   {

                       dr = dt.NewRow();

for (j = 0; j < ColumnDataType.Length; j++)

                       {

                           dr["c" + j] = GetCellData(ColumnDataType[j], row, j);

                       }

                       dt.Rows.Add(dr);

                       intime++;

                   }

                   catch (Exception er)

                   {

                       ertime++;

                       sb.Append(string.Format("第{0}行出错:{1}\r\n", i + 1, er.Message));

                       continue;

                   }

               }

               ds.Tables.Add(dt);

           }

           if (ds.Tables[0].Rows.Count == 0 && sb.ToString() != "") throw new Exception(sb.ToString());

           return ds;

       }

       #endregion

       Color LevelOneColor = Color.Green;

       Color LevelTwoColor = Color.FromArgb(201, 217, 243);

       Color LevelThreeColor = Color.FromArgb(231, 238, 248);

       Color LevelFourColor = Color.FromArgb(232, 230, 231);

       Color LevelFiveColor = Color.FromArgb(250, 252, 213);

#region 从DataSet导出到MemoryStream流2003

       /// <summary>

       /// 从DataSet导出到MemoryStream流2003

       /// </summary>

       /// <param name="SaveFileName">文件保存路径</param>

       /// <param name="SheetName">Excel文件中的Sheet名称</param>

       /// <param name="ds">存储数据的DataSet</param>

       /// <param name="startRow">从哪一行开始写入,从0开始</param>

       /// <param name="datatypes">DataSet中的各列对应的数据类型</param>

       public bool CreateExcel2003(string SaveFileName, string SheetName, DataSet ds, int startRow, params NpoiDataType[] datatypes)

       {

           try

           {

               if (startRow < 0) startRow = 0;

               HSSFWorkbook wb = new HSSFWorkbook();

               wb = new HSSFWorkbook();

               DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();

               dsi.Company = "pkm";

               SummaryInformation si = PropertySetFactory.CreateSummaryInformation();

               si.Title =

               si.Subject = "automatic genereted document";

               si.Author = "pkm";

               wb.DocumentSummaryInformation = dsi;

               wb.SummaryInformation = si;

               ISheet sheet = wb.CreateSheet(SheetName);

               //sheet.SetColumnWidth(0, 50 * 256);

               //sheet.SetColumnWidth(1, 100 * 256);

               IRow row;

               ICell cell;

               DataRow dr;

               int j;

               int maxLength = 0;

               int curLength = 0;

               object columnValue;

               DataTable dt = ds.Tables[0];

               if (datatypes.Length < dt.Columns.Count)

               {

                   datatypes = new NpoiDataType[dt.Columns.Count];

                   for (int i = 0; i < dt.Columns.Count; i++)

                   {

                       string dtcolumntype = dt.Columns[i].DataType.Name.ToLower();

                       switch (dtcolumntype)

                       {

                           case "string": datatypes[i] = NpoiDataType.String;

                               break;

                           case "datetime": datatypes[i] = NpoiDataType.Datetime;

                               break;

                           case "boolean": datatypes[i] = NpoiDataType.Bool;

                               break;

                           case "double": datatypes[i] = NpoiDataType.Numeric;

                               break;

                           default: datatypes[i] = NpoiDataType.String;

                               break;

                       }

                   }

               }

#region 创建表头

               row = sheet.CreateRow(0);//创建第i行

               ICellStyle style1 = wb.CreateCellStyle();//样式

               IFont font1 = wb.CreateFont();//字体

font1.Color = HSSFColor.WHITE.index;//字体颜色

               font1.Boldweight = (short)FontBoldWeight.BOLD;//字体加粗样式

               //style1.FillBackgroundColor = HSSFColor.WHITE.index;//GetXLColour(wb, LevelOneColor);// 设置图案色

               style1.FillForegroundColor = HSSFColor.GREEN.index;//GetXLColour(wb, LevelOneColor);// 设置背景色

               style1.FillPattern = FillPatternType.SOLID_FOREGROUND;

               style1.SetFont(font1);//样式里的字体设置具体的字体样式

               style1.Alignment = HorizontalAlignment.CENTER;//文字水平对齐方式

               style1.VerticalAlignment = VerticalAlignment.CENTER;//文字垂直对齐方式

               row.HeightInPoints = 25;

               for (j = 0; j < dt.Columns.Count; j++)

               {

                   columnValue = dt.Columns[j].ColumnName;

                   curLength = Encoding.Default.GetByteCount(columnValue.ToString());

                   maxLength = (maxLength < curLength ? curLength : maxLength);

                   int colounwidth = 256 * maxLength;

                   sheet.SetColumnWidth(j, colounwidth);

                   try

                   {

                       cell = row.CreateCell(j);//创建第0行的第j列

                       cell.CellStyle = style1;//单元格式设置样式

try

                       {

                           cell.SetCellType(CellType.STRING);

                           cell.SetCellValue(columnValue.ToString());

                       }

                       catch { }

}

                   catch

                   {

                       continue;

                   }

               }

               #endregion

#region 创建每一行

               for (int i = startRow; i < ds.Tables[0].Rows.Count; i++)

               {

                   dr = ds.Tables[0].Rows[i];

                   row = sheet.CreateRow(i + 1);//创建第i行

                   for (j = 0; j < dt.Columns.Count; j++)

                   {

                       columnValue = dr[j];

                       curLength = Encoding.Default.GetByteCount(columnValue.ToString());

                       maxLength = (maxLength < curLength ? curLength : maxLength);

                       int colounwidth = 256 * maxLength;

                       sheet.SetColumnWidth(j, colounwidth);

                       try

                       {

                           cell = row.CreateCell(j);//创建第i行的第j列

                           #region 插入第j列的数据

                            try

                           {

                               NpoiDataType dtype = datatypes[j];

                               switch (dtype)

                               {

                                   case NpoiDataType.String:

                                       {

                                           cell.SetCellType(CellType.STRING);

                                           cell.SetCellValue(columnValue.ToString());

                                       } break;

                                   case NpoiDataType.Datetime:

                                       {

                                           cell.SetCellType(CellType.STRING);

                                           cell.SetCellValue(columnValue.ToString());

                                       } break;

                                   case NpoiDataType.Numeric:

                                       {

                                           cell.SetCellType(CellType.NUMERIC);

                                           cell.SetCellValue(Convert.ToDouble(columnValue));

                                       } break;

                                   case NpoiDataType.Bool:

                                       {

                                           cell.SetCellType(CellType.BOOLEAN);

                                           cell.SetCellValue(Convert.ToBoolean(columnValue));

                                       } break;

                                   case NpoiDataType.Richtext:

                                       {

                                           cell.SetCellType(CellType.FORMULA);

                                           cell.SetCellValue(columnValue.ToString());

                                       } break;

                               }

                           }

                           catch

                           {

                               cell.SetCellType(CellType.STRING);

                               cell.SetCellValue(columnValue.ToString());

                           }

                           #endregion

}

                       catch

                       {

                           continue;

                       }

                   }

               }

               #endregion

//using (FileStream fs = new FileStream(@SaveFileName, FileMode.OpenOrCreate))//生成文件在服务器上

               //{

               //    wb.Write(fs);

               //}

               //string SaveFileName = "output.xls";

               using (FileStream fs = new FileStream(@SaveFileName, FileMode.OpenOrCreate, FileAccess.Write))//生成文件在服务器上

               {

                   wb.Write(fs);

                   Console.WriteLine("文件保存成功!" + SaveFileName);

               }

return true;

           }

           catch (Exception er)

           {

               Console.WriteLine("文件保存成功!" + SaveFileName);

               return false;

           }

}

       #endregion

#region 从DataSet导出到MemoryStream流2007

       /// <summary>

       /// 从DataSet导出到MemoryStream流2007

       /// </summary>

       /// <param name="SaveFileName">文件保存路径</param>

       /// <param name="SheetName">Excel文件中的Sheet名称</param>

       /// <param name="ds">存储数据的DataSet</param>

       /// <param name="startRow">从哪一行开始写入,从0开始</param>

       /// <param name="datatypes">DataSet中的各列对应的数据类型</param>

       public bool CreateExcel2007(string SaveFileName,string SheetName, DataSet ds, int startRow, params NpoiDataType[] datatypes)

       {

           try

           {

               if (startRow < 0) startRow = 0;

               XSSFWorkbook wb = new XSSFWorkbook();

               ISheet sheet = wb.CreateSheet(SheetName);

               //sheet.SetColumnWidth(0, 50 * 256);

               //sheet.SetColumnWidth(1, 100 * 256);

               IRow row;

               ICell cell;

               DataRow dr;

               int j;

               int maxLength = 0;

               int curLength = 0;

               object columnValue;

               DataTable dt = ds.Tables[0];

               if (datatypes.Length < dt.Columns.Count)

               {

                   datatypes = new NpoiDataType[dt.Columns.Count];

                   for (int i = 0; i < dt.Columns.Count; i++)

                   {

                       string dtcolumntype = dt.Columns[i].DataType.Name.ToLower();

                       switch (dtcolumntype)

                       {

                           case "string": datatypes[i] = NpoiDataType.String;

                               break;

                           case "datetime": datatypes[i] = NpoiDataType.Datetime;

                               break;

                           case "boolean": datatypes[i] = NpoiDataType.Bool;

                               break;

                           case "double": datatypes[i] = NpoiDataType.Numeric;

                               break;

                           default: datatypes[i] = NpoiDataType.String;

                               break;

                       }

                   }

               }

#region 创建表头

               row = sheet.CreateRow(0);//创建第i行

               ICellStyle style1 = wb.CreateCellStyle();//样式

               IFont font1 = wb.CreateFont();//字体

font1.Color = HSSFColor.WHITE.index;//字体颜色

               font1.Boldweight = (short)FontBoldWeight.BOLD;//字体加粗样式

               //style1.FillBackgroundColor = HSSFColor.WHITE.index;//GetXLColour(wb, LevelOneColor);// 设置图案色

               style1.FillForegroundColor = HSSFColor.GREEN.index;//GetXLColour(wb, LevelOneColor);// 设置背景色

               style1.FillPattern = FillPatternType.SOLID_FOREGROUND;

               style1.SetFont(font1);//样式里的字体设置具体的字体样式

               style1.Alignment = HorizontalAlignment.CENTER;//文字水平对齐方式

               style1.VerticalAlignment = VerticalAlignment.CENTER;//文字垂直对齐方式

               row.HeightInPoints = 25;

               for (j = 0; j < dt.Columns.Count; j++)

               {

                   columnValue = dt.Columns[j].ColumnName;

                   curLength = Encoding.Default.GetByteCount(columnValue.ToString());

                   maxLength = (maxLength < curLength ? curLength : maxLength);

                   int colounwidth = 256 * maxLength;

                   sheet.SetColumnWidth(j, colounwidth);

                   try

                   {

                       cell = row.CreateCell(j);//创建第0行的第j列

                       cell.CellStyle = style1;//单元格式设置样式

try

                       {

                           //cell.SetCellType(CellType.STRING);

                           cell.SetCellValue(columnValue.ToString());

                       }

                       catch { }

}

                   catch

                   {

                       continue;

                   }

               }

               #endregion

#region 创建每一行

               for (int i = startRow; i < ds.Tables[0].Rows.Count; i++)

               {

                   dr = ds.Tables[0].Rows[i];

                   row = sheet.CreateRow(i + 1);//创建第i行

                   for (j = 0; j < dt.Columns.Count; j++)

                   {

                       columnValue = dr[j];

                       curLength = Encoding.Default.GetByteCount(columnValue.ToString());

                       maxLength = (maxLength < curLength ? curLength : maxLength);

                       int colounwidth = 256 * maxLength;

                       sheet.SetColumnWidth(j, colounwidth);

                       try

                       {

                           cell = row.CreateCell(j);//创建第i行的第j列

                           #region 插入第j列的数据

                           try

                           {

                               NpoiDataType dtype = datatypes[j];

                               switch (dtype)

                               {

                                   case NpoiDataType.String:

                                       {

                                           //cell.SetCellType(CellType.STRING);

                                           cell.SetCellValue(columnValue.ToString());

                                       } break;

                                   case NpoiDataType.Datetime:

                                       {

                                          // cell.SetCellType(CellType.STRING);

                                           cell.SetCellValue(columnValue.ToString());

                                       } break;

                                   case NpoiDataType.Numeric:

                                       {

                                           //cell.SetCellType(CellType.NUMERIC);

                                           cell.SetCellValue(Convert.ToDouble(columnValue));

                                       } break;

                                   case NpoiDataType.Bool:

                                       {

                                           //cell.SetCellType(CellType.BOOLEAN);

                                           cell.SetCellValue(Convert.ToBoolean(columnValue));

                                       } break;

                                   case NpoiDataType.Richtext:

                                       {

                                          // cell.SetCellType(CellType.FORMULA);

                                           cell.SetCellValue(columnValue.ToString());

                                       } break;

                               }

                           }

                           catch

                           {

                               //cell.SetCellType(HSSFCell.CELL_TYPE_STRING);

                               cell.SetCellValue(columnValue.ToString());

                           }

                           #endregion

}

                       catch

                       {

                           continue;

                       }

                   }

               }

               #endregion

//using (FileStream fs = new FileStream(@SaveFileName, FileMode.OpenOrCreate))//生成文件在服务器上

               //{

               //    wb.Write(fs);

               //}

               //string SaveFileName = "output.xlsx";

               using (FileStream fs = new FileStream(SaveFileName, FileMode.OpenOrCreate, FileAccess.Write))//生成文件在服务器上

               {

                   wb.Write(fs);

                   Console.WriteLine("文件保存成功!" + SaveFileName);

               }

               return true;

           }

           catch (Exception er)

           {

               Console.WriteLine("文件保存失败!" + SaveFileName);

               return false;

           }

}

       #endregion

private short GetXLColour(HSSFWorkbook workbook, System.Drawing.Color SystemColour)

       {

           short s = 0;

           HSSFPalette XlPalette = workbook.GetCustomPalette();

           HSSFColor XlColour = XlPalette.FindColor(SystemColour.R, SystemColour.G, SystemColour.B);

           if (XlColour == null)

           {

               if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 255)

               {

                   if (NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE < 64)

                   {

                       //NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE= 64;

                       //NPOI.HSSF.Record.PaletteRecord.STANDARD_PALETTE_SIZE += 1;

                       XlColour = XlPalette.AddColor(SystemColour.R, SystemColour.G, SystemColour.B);

                   }

                   else

                   {

                       XlColour = XlPalette.FindSimilarColor(SystemColour.R, SystemColour.G, SystemColour.B);

                   }

                   s = XlColour.GetIndex();

               }

           }

           else

               s = XlColour.GetIndex();

           return s;

       }

#region 读Excel-根据NpoiDataType创建的DataTable列的数据类型

       /// <summary>

       /// 读Excel-根据NpoiDataType创建的DataTable列的数据类型

       /// </summary>

       /// <param name="datatype"></param>

       /// <returns></returns>

       private Type GetDataTableType(NpoiDataType datatype)

       {

           Type tp = typeof(string);//Type.GetType("System.String")

           switch (datatype)

           {

               case NpoiDataType.Bool:

                   tp = typeof(bool);

                   break;

               case NpoiDataType.Datetime:

                   tp = typeof(DateTime);

                   break;

               case NpoiDataType.Numeric:

                   tp = typeof(double);

                   break;

               case NpoiDataType.Error:

                   tp = typeof(string);

                   break;

               case NpoiDataType.Blank:

                   tp = typeof(string);

                   break;

           }

           return tp;

       }

       #endregion

#region 读Excel-得到不同数据类型单元格的数据

       /// <summary>

       /// 读Excel-得到不同数据类型单元格的数据

       /// </summary>

       /// <param name="datatype">数据类型</param>

       /// <param name="row">数据中的一行</param>

       /// <param name="column">哪列</param>

       /// <returns></returns>

       private object GetCellData(NpoiDataType datatype, IRow row, int column)

       {

switch (datatype)

           {

               case NpoiDataType.String:

                   try

                   {

                       return row.GetCell(column).DateCellValue;

                   }

                   catch

                   {

                       try

                       {

                           return row.GetCell(column).StringCellValue;

                       }

                       catch

                       {

                           return row.GetCell(column).NumericCellValue;

                       }

                   }

               case NpoiDataType.Bool:

                   try { return row.GetCell(column).BooleanCellValue; }

                   catch { return row.GetCell(column).StringCellValue; }

               case NpoiDataType.Datetime:

                   try { return row.GetCell(column).DateCellValue; }

                   catch { return row.GetCell(column).StringCellValue; }

               case NpoiDataType.Numeric:

                   try { return row.GetCell(column).NumericCellValue; }

                   catch { return row.GetCell(column).StringCellValue; }

               case NpoiDataType.Richtext:

                   try { return row.GetCell(column).RichStringCellValue; }

                   catch { return row.GetCell(column).StringCellValue; }

               case NpoiDataType.Error:

                   try { return row.GetCell(column).ErrorCellValue; }

                   catch { return row.GetCell(column).StringCellValue; }

               case NpoiDataType.Blank:

                   try { return row.GetCell(column).StringCellValue; }

                   catch { return ""; }

               default: return "";

           }

       }

       #endregion

#region 获取单元格数据类型

       /// <summary>

       /// 获取单元格数据类型

       /// </summary>

       /// <param name="hs"></param>

       /// <returns></returns>

       private NpoiDataType GetCellDataType(ICell hs)

       {

           NpoiDataType dtype;

           DateTime t1;

           string cellvalue = "";

switch (hs.CellType)

           {

               case CellType.BLANK:

                   dtype = NpoiDataType.String;

                   cellvalue = hs.StringCellValue;

                   break;

               case CellType.BOOLEAN:

                   dtype = NpoiDataType.Bool;

                   break;

               case CellType.NUMERIC:

                   dtype = NpoiDataType.Numeric;

                   cellvalue = hs.NumericCellValue.ToString();

                   break;

               case CellType.STRING:

                   dtype = NpoiDataType.String;

                   cellvalue = hs.StringCellValue;

                   break;

               case CellType.ERROR:

                   dtype = NpoiDataType.Error;

                   break;

               case CellType.FORMULA:

               default:

                   dtype = NpoiDataType.Datetime;

                   break;

           }

           if (cellvalue != "" && DateTime.TryParse(cellvalue, out t1)) dtype = NpoiDataType.Datetime;

           return dtype;

       }

       #endregion

#region 测试代码

#endregion

   }

#region 枚举(Excel单元格数据类型)

   /// <summary>

   /// 枚举(Excel单元格数据类型)

   /// </summary>

   public enum NpoiDataType

   {

       /// <summary>

       /// 字符串类型-值为1

       /// </summary>

       String,

       /// <summary>

       /// 布尔类型-值为2

       /// </summary>

       Bool,

       /// <summary>

       /// 时间类型-值为3

       /// </summary>

       Datetime,

       /// <summary>

       /// 数字类型-值为4

       /// </summary>

       Numeric,

       /// <summary>

       /// 复杂文本类型-值为5

       /// </summary>

       Richtext,

       /// <summary>

       /// 空白

       /// </summary>

       Blank,

       /// <summary>

       /// 错误

       /// </summary>

       Error

   }

   #endregion

}

C#中npoi操作Excel[版本2.0.1读写2003、2007格式]的更多相关文章

  1. C#中NPOI操作excel之读取和写入excel数据

    一.下载引用 下载需要引用的dll,即:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,ICSharpCode.SharpZipLib.dll(office2 ...

  2. C#开发中使用Npoi操作excel实例代码

    C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...

  3. 使用NPOI操作Excel文件及其日期处理

    工作中经常遇到需要读取或导出Excel文件的情况,而NPOI是目前最宜用.效率最高的操作的Office(不只是Excel哟)文件的组件,使用方便,不详细说明了. Excel工作表约定:整个Excel表 ...

  4. NPOI操作Excel辅助类

    /// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...

  5. NPOI操作excel之写入数据到excel表

    在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...

  6. 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数

    2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数   NPOI教程:http://www.cnb ...

  7. .NET 通过 NPOI 操作 Excel

    目录 .NET 通过 NPOI 操作 Excel 第一步:通过 NuGet 获取 NPOI 包并引入程序集 第二步:引入 NPOI 帮助类 第三步:在程序中调用相应的方法对数据进行导出导入操作 将 D ...

  8. 2.6.2 用NPOI操作EXCEL--设置密码才可以修改单元格内容

    2.6.2 用NPOI操作EXCEL--设置密码       有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完 ...

  9. C# 如何使用NPOI操作Excel以及读取合并单元格等

    C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...

随机推荐

  1. C#中多线程写DataGridView出现滚动条导致程序卡死(无响应)的解决办法

    因为写的程序涉及到多线程维护一个DataGridView,然后蛋疼的发现经常卡死...一开始以为是读写冲突的原因,然后就加了锁,问题依旧...然后发现每次出现滚动条的时候程序才会无响应,所以感觉应该是 ...

  2. .NET EF 访问Oracle之问题小结

    由于最近手头上的项目要求使用Oracle数据库,所以我搭建了asp.net mvc + EF + bootstrap + log4Net + unity的三层框架,如下图所示: 其中单元测试使用微软自 ...

  3. 2015年9月29日 sql 触发器

    触发器(trigger):当有关联操作的时候使用(级联操作),属于ddl关键字. eg:下订单时,创建中的商品数量要减少:退票时,总的票数要增加.         在订单上建立触发器         ...

  4. 【转载】C# Tutorial - Simple Threaded TCP Server

    http://tech.pro/tutorial/704/csharp-tutorial-simple-threaded-tcp-server In this tutorial I'm going t ...

  5. SessionId

    http://www.codeweblog.com/session-cookie-jsessionid-url-rewriting/

  6. JavaScript 将字符串转化为json对象

    var json = eval('(' + data + ')'); 其中data为字符串数据

  7. selectpicker下拉多选框ajax异步或者提前赋值=》默认值

    Bootstrap select多选下拉框赋值 success: function (data) { var oldnumber = new Array(); $.each(data, functio ...

  8. USACO3.35A Game(记忆化)

    刚开始理解有点误,想成每步都是最优的 ,结果卡在第六组数据上,, 无奈瞧了下别人的 发现自己理解错了,,我看的还是中文翻译.. 简单的记忆化 /* ID: shangca2 LANG: C++ TAS ...

  9. bzoj1202

    很久以前写的,忘补解题报告了首先似乎dfs就可以了吧?但还有更高大上的做法其实这东西就是告诉sum[y]-sum[x-1]=z然后给出一堆看成不成立可以用并查集,维护每个点到father点的差即可 . ...

  10. Sql Server CONVERT获取当前日期及日期样式

    Sql Server CONVERT获取当前日期及日期样式(转)(2012-06-06 12:00:24) 转载▼ // 标签: 杂谈 分类: SQL Sql Server CONVERT样式 获取当 ...