//须引入 NPOI, NPOI.OOXML, NPOI.Openxml4Net, NPOI.OpenxmlFormats等程序集 自己去下载吧 NPOI组件很好用不可能下不到自己去吧,通常去百度网盘搜索引擎就有很多了

1添加ImportExcelHelper,ExcelDataMap,DataTypeDimesion等帮助类代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Holworth.Utility;
using NPOI.HSSF.Record;

namespace ConsoleApplication25
{
public enum DataTypeDimesion
{
浮点型 = 0,
整型 = 1,
日期 = 2,
字符串 = 3
}

public class ExcelDataMap
{
public int MapIndex { get; set; }
public string ColumnName { get; set; }
public DataTypeDimesion DataType { get; set; }
}
class ImportExcelHelper
{
private static string ColNameMapValue(DataTable table, int rowIndex, int colIndex)
{
return table.Rows[rowIndex][colIndex].ToString();
}
/// <summary>
/// 通过异或将表格的行列转置
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
public static void Swap(ref int a, ref int b)
{
a = a ^ b;//a=10100,b=0010,两者相异或的结果是10110,并保存在a中。
b = a ^ b;//a=10110,b=0010,两者相异或的结果是10100,并保存在b中,换成二进制是20
a = a ^ b;//a=10110,b=10100,两者相异或的结果是00010,保存在a中,换成十进制是2
}

public static string NoTranspose(string fileName, List<ExcelDataMap> ExcelDataMaps, int startIndex,string importTableName)
{

DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds = ExcelHelper.ReadExcelAllSheets(fileName, 0, false);
dt = ds.Tables[0];
string columns = "";
string sql = "begin\n";
while (true)
{
string tempsql = "";

//最后一列遇到结束的时候跳出循环不再拼接sql语句

int MinIndex = ExcelDataMaps.Min(e => e.MapIndex);
if (startIndex < dt.Rows.Count && string.IsNullOrEmpty(dt.Rows[startIndex][MinIndex].ToString()))
{
bool pause = true;
for (int i = MinIndex+1; i < dt.Columns.Count; i++)
{
if (!string.IsNullOrEmpty(dt.Rows[startIndex][i].ToString()))
{
pause = false;
}
}
if (pause)
{
break;
}

}
if (startIndex >= dt.Rows.Count)
{
break;
}

tempsql += string.Format("\n insert into {0}( ", importTableName);
ExcelDataMaps.ForEach(e => { columns += e.ColumnName + ","; });

//额外添加一个输入日期
//columns += "INPUT_DATE" + ",";
columns = columns.TrimEnd(',');
//sql 先拼接头部
tempsql += columns;
tempsql += ")";
tempsql += "\n";
tempsql += "values(";
foreach (ExcelDataMap dataMap in ExcelDataMaps)
{
int rowIndex = dataMap.MapIndex;
//回来
string valueObject = ColNameMapValue(dt, startIndex, rowIndex).Trim();
switch (dataMap.DataType)
{
case DataTypeDimesion.字符串:

tempsql += "'" + valueObject + "'" + ",";
break;
case DataTypeDimesion.整型:
int i = 0;
if (String.IsNullOrEmpty(valueObject))
{

valueObject = "0";
}
Int32.TryParse(valueObject, out i);
tempsql += i + ",";

break;
case DataTypeDimesion.浮点型:
decimal f = 0;
if (String.IsNullOrEmpty(valueObject))
{

valueObject = "0";
}
Decimal.TryParse(valueObject, out f);

tempsql += f + ",";
break;
case DataTypeDimesion.日期:
if (!String.IsNullOrEmpty(valueObject))
{

valueObject = (String.Format("to_date('{0}','yyyy-mm-dd hh24:mi:ss')", valueObject));

}
else
{

valueObject = "''";

}
tempsql += valueObject + ",";
break;

}

}

//tempsql += (string.Format("to_date('{0}','yyyy-mm-dd hh24:mi:ss')", DateTime.Now)) + ",";
tempsql = tempsql.TrimEnd(',');
tempsql += ");";
sql += tempsql;
startIndex++;
columns = "";

}

sql += "\n end;";
return sql;
}

public static string IsTranspose(string fileName, List<ExcelDataMap> ExcelDataMaps, int startIndex, string importTableName)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds = ExcelHelper.ReadExcelAllSheets(fileName, 0, false);
dt = ds.Tables[0];
string columns = "";
string sql = "begin\n";
while (true)
{
string tempsql = "";

//最后一列遇到结束的时候跳出循环不再拼接sql语句

int MinIndex = ExcelDataMaps.Min(e => e.MapIndex);

if (startIndex < dt.Columns.Count && string.IsNullOrEmpty(dt.Rows[MinIndex][startIndex].ToString()))
{
bool pause=true;
for (int i = MinIndex+1; i < dt.Rows.Count; i++)
{
if (!string.IsNullOrEmpty(dt.Rows[i][startIndex].ToString()))
{
pause = false;
}
}
if (pause)
{
break;
}

}
if (startIndex >= dt.Columns.Count)
{
break;
}

tempsql += string.Format("\n insert into {0}( ", importTableName);
ExcelDataMaps.ForEach(e => { columns += e.ColumnName + ","; });

//额外添加一个输入日期
//columns += "INPUT_DATE" + ",";
columns = columns.TrimEnd(',');
//sql 先拼接头部
tempsql += columns;
tempsql += ")";
tempsql += "\n";
tempsql += "values(";

string tempCompanyName = String.Empty;
foreach (ExcelDataMap dataMap in ExcelDataMaps)
{
int rowIndex = dataMap.MapIndex;
string valueObject = ColNameMapValue(dt, rowIndex, startIndex).Trim();
switch (dataMap.DataType)
{
case DataTypeDimesion.字符串:

tempsql += "'" + valueObject + "'" + ",";
break;
case DataTypeDimesion.整型:
int i = 0;
if (String.IsNullOrEmpty(valueObject))
{

valueObject = "0";
}
Int32.TryParse(valueObject, out i);
tempsql += i + ",";

break;
case DataTypeDimesion.浮点型:
decimal f = 0;
if (String.IsNullOrEmpty(valueObject))
{

valueObject = "0";
}
Decimal.TryParse(valueObject, out f);

tempsql += f + ",";
break;
case DataTypeDimesion.日期:
if (!String.IsNullOrEmpty(valueObject))
{

valueObject = (String.Format("to_date('{0}','yyyy-mm-dd hh24:mi:ss')", valueObject));

}
else
{

valueObject = "''";

}
tempsql += valueObject + ",";
break;

}

}

//tempsql += (string.Format("to_date('{0}','yyyy-mm-dd hh24:mi:ss')", DateTime.Now)) + ",";
tempsql = tempsql.TrimEnd(',');
tempsql += ");";
sql += tempsql;
startIndex++;
columns = "";

}

sql += "\n end;";
return sql;

}

/// <summary>
///
/// </summary>
/// <param name="fileName"></param>
/// <param name="ExcelDataMaps"></param>
/// <param name="startIndex"> 不转置的情况代表从第几行开始读取,转置的情况代表从第几列开始读取(不转置每行代表一条记录,转置则每列代表一条记录)</param>
/// <param name="importTableName">导入的表名</param>
/// <param name="isTranspose"></param>
/// <returns></returns>
public static string ImportExcel4DataMap(string fileName, List<ExcelDataMap> ExcelDataMaps, int startIndex, string importTableName, bool isTranspose)
{
string sql = "";
if (isTranspose)
{
sql = IsTranspose(fileName, ExcelDataMaps, startIndex, importTableName);
}
else
{
sql = NoTranspose(fileName, ExcelDataMaps, startIndex, importTableName);
}
return sql;

}
}
}

2.中间帮助类 ExcelHelper.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using System.Web;
using NPOI;
using NPOI.HPSF;
using NPOI.HSSF;
//using NPOI.HSSF.Record.Formula.Eval;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.POIFS;
using NPOI.SS.UserModel;
using NPOI.Util;
using NPOI.SS;
using NPOI.DDF;
using NPOI.SS.Util;
using System.Collections;
using System.Text.RegularExpressions;
using NPOI.XSSF.UserModel;

namespace Holworth.Utility
{
public class ExcelHelper
{
#region 读取Excel第一个Sheet
public static DataTable ReadExcel(string path, int TitleRow, bool lastRowIsData)
{
string extname = System.IO.Path.GetExtension(path);
if (extname.ToLower().Equals(".xls"))
{
return ReadExcel2003(path, TitleRow, lastRowIsData, 0);
}
else
{
return ReadExcel2007(path, TitleRow, lastRowIsData, 0);
}
}
public static DataTable ReadExcel(string path, int TitleRow, bool lastRowIsData, int tableindex)
{
string extname = System.IO.Path.GetExtension(path);
if (extname.ToLower().Equals(".xls"))
{
return ReadExcel2003(path, TitleRow, lastRowIsData, tableindex);
}
else
{
return ReadExcel2007(path, TitleRow, lastRowIsData, tableindex);
}
}

private static DataTable ReadExcel2003(string path, int TitleRow, bool lastRowIsData, int tableindex)
{
FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read);
HSSFWorkbook workbook2003 = new HSSFWorkbook(file);

//获取excel的第一个sheet
HSSFSheet sheet = (HSSFSheet)workbook2003.GetSheetAt(tableindex);

DataTable table = new DataTable();
//获取sheet的首行
HSSFRow headerRow = (HSSFRow)sheet.GetRow(TitleRow);

//一行最后一个方格的编号 即总的列数
int cellCount = headerRow.LastCellNum;

for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column.ToString().Trim().Replace(" ", ""));
}
//最后一列的标号 即总的行数
int rowCount = sheet.LastRowNum;

for (int i = (TitleRow + 1); i <= sheet.LastRowNum; i++)
{
HSSFRow row = (HSSFRow)sheet.GetRow(i);
DataRow dataRow = table.NewRow();

for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
}

table.Rows.Add(dataRow);
}
workbook2003 = null;
sheet = null;

return table;
}

private static DataTable ReadExcel2007(string path, int TitleRow, bool lastRowIsData, int tableindex)
{
FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read);
XSSFWorkbook workbook2007 = new XSSFWorkbook(file);

//获取excel的第一个sheet
XSSFSheet sheet = (XSSFSheet)workbook2007.GetSheetAt(tableindex);

DataTable table = new DataTable();
//获取sheet的标题行,用于形成表头
XSSFRow headerRow = (XSSFRow)sheet.GetRow(TitleRow);

//一行最后一个方格的编号 即总的列数
int cellCount = headerRow.LastCellNum;

for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column);
}
//最后一列的标号 即总的行数
int rowCount = sheet.LastRowNum;

for (int i = (TitleRow + 1); i < sheet.LastRowNum; i++)
{
XSSFRow row = (XSSFRow)sheet.GetRow(i);
DataRow dataRow = table.NewRow();

for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
}

table.Rows.Add(dataRow);
}
workbook2007 = null;
sheet = null;
return table;
}
#endregion

#region 读取Excel所有Sheet
public static DataSet ReadExcelAllSheets(string path, int TitleRow, bool lastRowIsData)
{
string extname = System.IO.Path.GetExtension(path);
if (extname.ToLower().Equals(".xls"))
{
return ReadExcel2003Tables(path, TitleRow, lastRowIsData);
}
else
{
return ReadExcel2007Tables(path, TitleRow, lastRowIsData);
}
}

private static DataSet ReadExcel2003Tables(string path, int TitleRow, bool lastRowIsData)
{
FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read);
HSSFWorkbook workbook2003 = new HSSFWorkbook(file);

int sheetcount = workbook2003.NumberOfSheets;

DataSet retds = new DataSet();
for (int sheetindex = 0; sheetindex < sheetcount; sheetindex++)
{
//获取excel的每一个sheet

HSSFSheet sheet = (HSSFSheet)workbook2003.GetSheetAt(sheetindex);

DataTable table = new DataTable();
//获取sheet的首行
HSSFRow headerRow = (HSSFRow)sheet.GetRow(TitleRow);
if (headerRow == null)
{
continue;
}
//一行最后一个方格的编号 即总的列数
int cellCount = headerRow.LastCellNum;
for (int i = 0; i < cellCount; i++)
{
try
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column.ToString().Trim().Replace(" ", ""));
}
catch {
table.Columns.Add();
}
}
if (table.Columns.Count == 0)
{
continue;
}
//最后一列的标号 即总的行数
int rowCount = sheet.LastRowNum;

for (int i = (TitleRow + 1); i <= sheet.LastRowNum; i++)
{
HSSFRow row = (HSSFRow)sheet.GetRow(i);
DataRow dataRow = table.NewRow();

for (int j = 0; j < cellCount; j++)
{
try
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
}
catch
{
dataRow[j] = DBNull.Value
;
}
}

table.Rows.Add(dataRow);
}
table.TableName = sheet.SheetName;
retds.Tables.Add(table);
sheet = null;
}
workbook2003 = null;
return retds;
}
private static DataSet ReadExcel2007Tables(string path, int TitleRow, bool lastRowIsData)
{
FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read);
XSSFWorkbook workbook2007 = new XSSFWorkbook(file);
int sheetcount = workbook2007.NumberOfSheets;
DataSet retds = new DataSet();
for (int sheetindex = 0; sheetindex < sheetcount; sheetindex++)
{
//获取excel的每一个sheet
XSSFSheet sheet = (XSSFSheet)workbook2007.GetSheetAt(sheetindex);
DataTable table = new DataTable();
//获取sheet的标题行,用于形成表头
XSSFRow headerRow = (XSSFRow)sheet.GetRow(TitleRow);
if (headerRow == null)
{
continue;
}
//一行最后一个方格的编号 即总的列数
int cellCount = headerRow.LastCellNum;

for (int i = 0; i < cellCount; i++)
{
try
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
table.Columns.Add(column);
}
catch
{
table.Columns.Add();
}
}
//最后一列的标号 即总的行数
int rowCount = sheet.LastRowNum;

for (int i = (TitleRow + 1); i < sheet.LastRowNum; i++)
{
XSSFRow row = (XSSFRow)sheet.GetRow(i);
DataRow dataRow = table.NewRow();

for (int j = 0; j < cellCount; j++)
{
try
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
}
catch
{
dataRow[j] = DBNull.Value
;
}
}

table.Rows.Add(dataRow);
}
table.TableName = sheet.SheetName;
retds.Tables.Add(table);
sheet = null;
}
workbook2007 = null;
return retds;
}
#endregion

}
}

3.调用示例

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Holworth.Utility;
using Microsoft.SqlServer.Server;

namespace ConsoleApplication25
{

class Program
{

static void Main(string[] args)
{
//转置 导入
#region 转置 导入
//string sql = ImportExcelHelper.ImportExcel4DataMap(@"D:\data of office.xls", new List<ExcelDataMap>()
//{
// //EXCEL 列映射 start
// (new ExcelDataMap() { MapIndex = 0, ColumnName = "CLIENT_NAME", DataType = DataTypeDimesion.字符串 }),
// (new ExcelDataMap() { MapIndex = 1, ColumnName = "COMPANY_NAME", DataType = DataTypeDimesion.字符串 }),

// (new ExcelDataMap() { MapIndex = 3, ColumnName = "TOTAL_ASSET", DataType = DataTypeDimesion.浮点型 }),
// (new ExcelDataMap() { MapIndex = 4, ColumnName = "SALE_REVENUE", DataType = DataTypeDimesion.浮点型 }),

// (new ExcelDataMap() { MapIndex = 6, ColumnName = "RETURN_ON_EQUITY", DataType = DataTypeDimesion.浮点型 }),
// (new ExcelDataMap() { MapIndex = 7, ColumnName = "SALE_PROFIT", DataType = DataTypeDimesion.浮点型 }),
// (new ExcelDataMap() { MapIndex = 8, ColumnName = "RETURN_TOTAL_ASSET", DataType = DataTypeDimesion.浮点型 }),
// (new ExcelDataMap() { MapIndex = 9, ColumnName = "INVENTORY_TURNOVER", DataType = DataTypeDimesion.浮点型 }),
// (new ExcelDataMap() { MapIndex = 10, ColumnName = "FIXED_ASSET_TURNOVER", DataType = DataTypeDimesion.浮点型 }),
// (new ExcelDataMap() { MapIndex = 11, ColumnName = "TOTAL_ASSET_TUNOVER", DataType = DataTypeDimesion.浮点型 }),

// (new ExcelDataMap() { MapIndex = 13, ColumnName = "ACCOUNT_RECEIVABLE_TURNOVER", DataType = DataTypeDimesion.浮点型 }),
// (new ExcelDataMap() { MapIndex = 14, ColumnName = "CURRENT_RATIO", DataType = DataTypeDimesion.浮点型 }),
// (new ExcelDataMap() { MapIndex = 15, ColumnName = "QUICK_RATIO", DataType = DataTypeDimesion.浮点型 }),
// (new ExcelDataMap() { MapIndex = 16, ColumnName = "ASSET_LIABILITY_RATIO", DataType = DataTypeDimesion.浮点型 }),
// //EXCEL 列映射 end

//}, 0, "ccr_credit_raw_data", true);
#endregion

//转置导入
#region 无转置 导入
string sql2 = ImportExcelHelper.ImportExcel4DataMap(@"D:\aa.xls", new List<ExcelDataMap>()
{
//EXCEL 列映射 start
(new ExcelDataMap() { MapIndex = 0, ColumnName = "CLIENT_NAME", DataType = DataTypeDimesion.字符串 }),
(new ExcelDataMap() { MapIndex = 1, ColumnName = "COMPANY_NAME", DataType = DataTypeDimesion.字符串 }),

(new ExcelDataMap() { MapIndex = 2, ColumnName = "TOTAL_ASSET", DataType = DataTypeDimesion.浮点型 }),
(new ExcelDataMap() { MapIndex = 3, ColumnName = "SALE_REVENUE", DataType = DataTypeDimesion.浮点型 }),

(new ExcelDataMap() { MapIndex = 4, ColumnName = "RETURN_ON_EQUITY", DataType = DataTypeDimesion.浮点型 }),
(new ExcelDataMap() { MapIndex = 5, ColumnName = "SALE_PROFIT", DataType = DataTypeDimesion.浮点型 }),
(new ExcelDataMap() { MapIndex = 6, ColumnName = "RETURN_TOTAL_ASSET", DataType = DataTypeDimesion.浮点型 }),
(new ExcelDataMap() { MapIndex = 7, ColumnName = "INVENTORY_TURNOVER", DataType = DataTypeDimesion.浮点型 }),
(new ExcelDataMap() { MapIndex = 8, ColumnName = "FIXED_ASSET_TURNOVER", DataType = DataTypeDimesion.浮点型 }),
(new ExcelDataMap() { MapIndex = 9, ColumnName = "TOTAL_ASSET_TUNOVER", DataType = DataTypeDimesion.浮点型 }),

(new ExcelDataMap() { MapIndex = 10, ColumnName = "ACCOUNT_RECEIVABLE_TURNOVER", DataType = DataTypeDimesion.浮点型 }),
(new ExcelDataMap() { MapIndex = 11, ColumnName = "CURRENT_RATIO", DataType = DataTypeDimesion.浮点型 }),
(new ExcelDataMap() { MapIndex = 12, ColumnName = "QUICK_RATIO", DataType = DataTypeDimesion.浮点型 }),
(new ExcelDataMap() { MapIndex = 13, ColumnName = "ASSET_LIABILITY_RATIO", DataType = DataTypeDimesion.浮点型 }),
//EXCEL 列映射 end

}, 0, "ccr_credit_raw_data", false);
#endregion
}
}
}

导入excel精华版的更多相关文章

  1. 一步步实现ABAP后台导入EXCEL到数据库【3】

    在一步步实现ABAP后台导入EXCEL到数据库[2]里,我们已经实现计划后台作业将数据导入数据库的功能.但是,这只是针对一个简单的自定义结构的导入程序.在实践应用中,面对不同的表.不同的导入文件,我们 ...

  2. 一步步实现ABAP后台导入EXCEL到数据库【1】

    在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...

  3. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  4. IE8下导入EXCEL数据传到客户端以附件下载

    IE8下导入EXCEL数据传到客户端以附件下载方式出现,而不显示数据,解决方法:以text/html格式返回. HttpResponseMessage message = new HttpRespon ...

  5. java的poi技术读取和导入Excel

    项目结构: http://www.cnblogs.com/hongten/gallery/image/111987.html  用到的Excel文件: http://www.cnblogs.com/h ...

  6. 报表工具如何实现多次导入Excel

    很多人在开发报表的时候会遇到将多张表样相同的excel导入到模板,然后提交至数据库中.但问题是很多情况,在线导入不支持一次性选择多个excel,一次只能选择一个excel,也不能将多个excel中的数 ...

  7. .NET导入Excel到SQL数据库

    在我们开发各类应用型系统,经常会遇到导入导出Excel,为什么会用到他呢?企业或者单位在从无信息化到信息化的一个转变过程.在没有信息化的企业或单位之前,一般都采用Excel来记录相应的数据,做统计计算 ...

  8. SQL Server服务器上需要导入Excel数据的必要条件

    SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Ex ...

  9. 导入excel数据到数据库

    1.上传excel到服务器 jsp页面代码 <form action="actionname" method="post" id="form1& ...

随机推荐

  1. Mysql无法创建外键的原因 !!!

    在MySQL中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个 ...

  2. PDA后台运行、安装程序

    ////启动最新版本安装(后台安装模式),结束更新程序            //string cabPath = @"\Application Data\QY.DDM.PDA.CAB&qu ...

  3. java 检测代理IP是否准确

    我这里提供2个方法都可以实现:第一个是createIPAddress()和convertStreamToString() import java.io.IOException; import java ...

  4. Codeforces-20152016-northwestern-european-regional-contest-nwerc-A题

    一.题目 二.题意 (1)一开始理解成:它最多需要开多少台电脑.同时,我又有个疑问,既然是最多需要开多少台,那不变成了总共有几个人开几台是最大的结果.然后,WA了无数发.直到比赛结束......其实说 ...

  5. javascript或node中的console用法总结

    //建立app.js页面 // 一:页面代码 console.log("log信息"); //在页面中执行(node app.js)这个文件会在控制台中看到log信息:" ...

  6. Java复习——反射和泛型的复习

    反射 Class类 一个类被类加载器加载到内存之中,占有一片区域,这个空间里的内容就是类的字节码,不同的类的字节码是不一样的,这一个个空间页可以使用类来表示,这就是Class类. 根据这个概念可知:不 ...

  7. Druid.io系列(四):索引过程分析

    原文链接: https://blog.csdn.net/njpjsoftdev/article/details/52956083 Druid底层不保存原始数据,而是借鉴了Apache Lucene.A ...

  8. Centos7 / RHEL 7 双网卡绑定

    http://www.cnblogs.com/hukey/p/6224969.html 1. 简要    双网卡绑定技术在centos7中使用了teaming技术,而在rhel6/centos7中使用 ...

  9. 微信小程序跳转navigateTo与redirectTo

    转自:https://www.cnblogs.com/perfect-yuewei/p/8301761.html 2018-01-16 - 微信中跳转页面方法目前接触到两种 navigateTo与re ...

  10. 「小程序JAVA实战」小程序的基础组件(24)

    转自:https://idig8.com/2018/08/12/xiaochengxu-chuji-24/ 来说下 ,小程序的基础组件.源码:https://github.com/limingios/ ...