C#NPOI 从Excel保存到数据库

C#NPOI 从Excel保存到数据库

首先需要引用程序集

或管理NuGet程序包 安装NPOI

需引用

复制代码
public ActionResult SqlBulkCopyByDatatable(string TableName)
{
using (FileStream fileReader = System.IO.File.OpenRead(@“C: \Users\acer\Desktop\112.xlsx”))
{
//创建工作簿对象接收文件流(Excel信息)
IWorkbook workbook = new XSSFWorkbook(fileReader);
//IWorkbook workbook = new HSSFWorkbook(fileReader);
//工作簿共有几个表
//int count = workbook.NumberOfSheets;
//创建工作表读取工作簿表信息
//ISheet sheet= workbook.GetSheet(“表名称”);
ISheet sheet = workbook.GetSheetAt(0);
string sql = @" insert into student(xuehao,name,sex,xueyuan,stuclass,nums,states) values (@xuehao,@name,@sex,@xueyuan,@stuclass,@nums,@states)";
int ii = 0;
//r = 1,剔除表头一行
for (int r = 1; r <= sheet.LastRowNum; r++)
{
//定义参数数组para
SqlParameter[] para = new SqlParameter[] {
new SqlParameter(“xuehao”,SqlDbType.NVarChar,100),
new SqlParameter(“name”,SqlDbType.NVarChar,100),
new SqlParameter(“sex”,SqlDbType.NVarChar,100),
new SqlParameter(“xueyuan”,SqlDbType.NVarChar,100),
new SqlParameter(“stuclass”,SqlDbType.NVarChar,100),
new SqlParameter(“nums”,SqlDbType.NVarChar,100),
new SqlParameter(“states”,SqlDbType.NVarChar,50)
};
//创建一行获取sheet行数据
IRow row = sheet.GetRow®;
//List listcell = new List();
//int c = 1 即不读取自动编号的Id列
for (int c = 0; c < row.LastCellNum; c++)
{
//将每行每个单元格的值添加带listcell集合中
//listcell.Add(row.GetCell©);
//将每行的每个单元格的数据添加到para中 c-1即从0 开始记录参数
para[c].Value = row.GetCell©.ToString();
}
//循环赋值给para
//for (int i = 0; i < listcell.Count; i++)
//{
// para[i].Value = listcell[i].ToString();
//}
//执行添加Sql语句
ii = DBHelper.ExecuteNonQuery(sql, para);
}
if (ii > 0)
{
return Content(“”);
}

        }
    }

复制代码

其中甚至不需要改变什么东西,如果本机的excel版本为2007之前的 需将

改为

其次为

这里存放的是绝对路径

再有就是根据自己的数据库表改变Insert语句

这里我放的是DBHelper,可以根据自己需要使用帮助类或者写ADO.net或者使用自己的方法

尤其需要注意这里,它决定行列从哪个开始

至此 一个比较简单的Excel数据导入到数据库就搞定了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Excel文件中的数据导入到Oracle数据库可以使用以下步骤: 1. 首先,需要将Excel文件读取到C#中,可以使用NPOI库来读取Excel文件中的数据。 2. 连接Oracle数据库,并打开连接。 3. 创建一个OracleCommand对象,该对象用于执行SQL命令。 4. 遍历Excel文件中的每一行数据,并将数据插入到Oracle数据库中,可以使用OracleCommand对象的ExecuteNonQuery方法来执行SQL语句。 以下是一个示例代码: ```csharp using System; using System.Data; using System.Data.OracleClient; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; // 读取Excel文件 HSSFWorkbook workbook = new HSSFWorkbook(new FileStream("Excel文件路径", FileMode.Open)); ISheet sheet = workbook.GetSheetAt(0); // 连接Oracle数据库 string connectionString = "Data Source=数据库地址;User ID=用户名;Password=密码;"; OracleConnection connection = new OracleConnection(connectionString); connection.Open(); // 创建OracleCommand对象 OracleCommand command = new OracleCommand(); command.Connection = connection; // 遍历Excel文件中的每一行数据,将数据插入到Oracle数据库中 for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); if (row == null) continue; string col1 = row.GetCell(0).ToString().Trim(); string col2 = row.GetCell(1).ToString().Trim(); string col3 = row.GetCell(2).ToString().Trim(); string sql = "insert into table_name(col1, col2, col3) values(:col1, :col2, :col3)"; command.CommandText = sql; command.Parameters.Clear(); command.Parameters.Add(new OracleParameter(":col1", col1)); command.Parameters.Add(new OracleParameter(":col2", col2)); command.Parameters.Add(new OracleParameter(":col3", col3)); command.ExecuteNonQuery(); } // 关闭连接 connection.Close(); ``` 需要注意的是,在执行SQL语句时,使用了参数化查询,可以防止SQL注入攻击。另外,需要根据Excel文件和Oracle数据库的实际情况,修改代码中的表名、列名和连接字符串等信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值