zoukankan      html  css  js  c++  java
  • C# # MVC #分部页# 导入#试题

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    using System.IO;
    using NPOI;
    using NPOI.HSSF.UserModel;
    using NPOI.XSSF.UserModel;
    using NPOI.SS.UserModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    namespace WebApplication1.Controllers
    {
        public class DefaultController : Controller
        {
            // GET: Default
            public ActionResult Index()
            {
    
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString))//连接对象
                {
                    if (conn.State == ConnectionState.Closed)
                    {
                        conn.Open();
                    }
                    SqlCommand cmd = new SqlCommand("select Topic.*,ExamType.TypeName from Topic join ExamType on ExamType.Id=Topic.TId", conn);
                    SqlDataAdapter sqlData = new SqlDataAdapter(cmd);
                    DataTable data = new DataTable();
                    sqlData.Fill(data);
    
                    return View(data );
                }
            }
            [HttpPost]
            public ActionResult Import() {
                //1.接收文件
                HttpPostedFileBase fileBase = Request.Files["fileExcel"];
                //2.判断是否上传文件
                if (fileBase==null)
                {
                    Response.Write("<script>alert('请上传文件')</script>");
                    return null ;
                }
                //3.文件是否是excl
                //4.文件转数据流
                Stream stream = fileBase.InputStream;
    
                //5.数据流转工作簿 数据库
                IWorkbook workbook = null;
                if (Path.GetExtension(fileBase.FileName).ToLower().Equals(".xls"))
                {
                    workbook = new HSSFWorkbook(stream);
                }
                if (Path.GetExtension(fileBase.FileName).ToLower().Equals(".xlsx"))
                {
                    workbook = new XSSFWorkbook(stream);
                }
    
                //6.获取sheet  数据表
                ISheet sheet = workbook.GetSheetAt(0);
                //7.获取sheet头
                IRow headRow = sheet.GetRow(0);
    
                //8.定义内存表DataTable
                DataTable dt = new DataTable();
                //9.DataTable加列(来自sheet头)
                foreach (ICell item in headRow.Cells)
                {
                    dt.Columns.Add(item.StringCellValue);
                }
                //10.遍历sheet每一行添加到DataTable
                for (int i = 1; i <=sheet.LastRowNum; i++)//遍历行
                {
                    //创建行
                    DataRow dr = dt.NewRow();
                    for (int j = 0; j < sheet.GetRow(i).Cells.Count; j++)//遍历列
                    {
                        //获取每个单元格的类型
                        CellType cellType = sheet.GetRow(i).Cells[j].CellType;
                        //获取datatable索引
                        int columnIndex = sheet.GetRow(i).Cells[j].ColumnIndex;
                        switch (cellType)
                        {
                            case CellType.Numeric:dr[columnIndex] = sheet.GetRow(i).Cells[j].NumericCellValue;break;
                            case CellType.Boolean: dr[columnIndex] = sheet.GetRow(i).Cells[j].BooleanCellValue; break;
                            case CellType.String: dr[columnIndex] = sheet.GetRow(i).Cells[j].StringCellValue; break;
                        }
                    }                                             
                    dt.Rows.Add(dr);//行追加到dt
                }
    
                //11.遍历DataTable拼接sql语句
                
                using (SqlConnection conn=new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString) )//连接对象
                {
                    if (conn.State==ConnectionState.Closed)
                    {
                        conn.Open();
                    }
    
                    using (SqlTransaction trans=conn.BeginTransaction())
                    {
                        try
                        {
                            //命令对象
                            SqlCommand command = conn.CreateCommand();
                            command.Transaction = trans;
                            foreach (DataRow item in dt.Rows)//
                            {
                                command.CommandText = "insert into Topic values(";
                                foreach (object it in item.ItemArray)//
                                {
                                    string value = it == null ? "" : it.ToString();
                                    if (value.Equals("1-单选")|| value.Equals("2-多选") || value.Equals("0-判断"))
                                    {
                                        command.CommandText += $"(select Id from ExamType where TypeName='{value}'),";
                                        continue;
                                    }
                                    command.CommandText += $"'{it}',";
                                }
                                command.CommandText = command.CommandText.TrimEnd(',') + ")";
                                command.ExecuteNonQuery();
                            }
                            //12.执行sql
                            trans.Commit();
    
    
                        
    
                        }
                        catch (Exception)
                        {
                            trans.Rollback();
                            throw;
                        }
                        finally {
                            trans.Dispose();
                            conn.Dispose();
                        }                          
                    }
                }
    
    
    
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString))//连接对象
                {
                    if (conn.State == ConnectionState.Closed)
                    {
                        conn.Open();
                    }
                    SqlCommand cmd = new SqlCommand("select Topic.*,ExamType.TypeName from Topic join ExamType on ExamType.Id=Topic.TId", conn);
                    SqlDataAdapter sqlData = new SqlDataAdapter(cmd);
                    DataTable data = new DataTable();
                    sqlData.Fill(data);
    
                    return PartialView("_PartialPage1", data);
                }
            }
        }
    }
    @{
        ViewBag.Title = "Index";
    }
    @using System.Data
    @model DataTable
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
    
    <h2>Index</h2>
    
    @using (Ajax.BeginForm("Import", null, new AjaxOptions { UpdateTargetId = "divData" }, new { enctype = "multipart/form-data" }))
    {
        <input id="File1" type="file" name="fileExcel" />
        <input id="Submit1" type="submit" value="导入" class="btn-primary btn" />
    }
    <div id="divData">
        @Html.Partial("_PartialPage1", Model)
    </div>
    @using System.Data
    @model DataTable
    <table class="table-bordered table">
        <tr>
            <th>知识点</th>
            <th>类型</th>
            <th>题干</th>
            <th>选项A</th>
            <th>选项B</th>
            <th>选项C</th>
            <th>选项D</th>
            <th>答案</th>
            <th>出题人</th>
        </tr>
        @foreach (DataRow item in Model.Rows)
        {
            <tr>
                <td>@item["knowledge"]</td>
                <td>@item["TypeName"]</td>
                <td>@item["TiGan"]</td>
                <td>@item["MenuA"]</td>
                <td>@item["MenuB"]</td>
                <td>@item["MenuC"]</td>
                <td>@item["MenuD"]</td>
                <td>@item["Rsesult"]</td>
                <td>@item["WritingPeople"]</td>
            </tr>
        }
    </table>
  • 相关阅读:
    线程的start和run方法的区别
    GC相关的面试题
    AVR单片机教程——EasyElectronics Library v1.3手册
    我回来了
    继续停更通知
    停更通知
    玩玩24点(上)
    AVR单片机教程——EasyElectronics Library v1.2手册
    AVR单片机教程——数码管
    算法基础课程总结
  • 原文地址:https://www.cnblogs.com/2018cjx/p/12159781.html
Copyright © 2011-2022 走看看