zoukankan      html  css  js  c++  java
  • NPOI excel导入模板

    public List ImportExe()
    {
    try
    {
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Title = "Excel文件"; ofd.FileName = "";
    ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    ofd.Filter = "所有文件(.)|.|Excel2003文件(.xls)|.xls|Excel2007文件(.xlsx)|.xlsx";
    ofd.ValidateNames = true;
    ofd.CheckFileExists = true;
    ofd.CheckPathExists = true;
    string file = string.Empty;
    if (ofd.ShowDialog() == DialogResult.OK)
    { file = ofd.FileName; }
    if (file == "")
    { XtraMessageBox.Show("没有选择Excel文件!无法进行数据导入"); }
    else
    {
    List dataList = new List();
    IWorkbook workbook;
    string fileExt = Path.GetExtension(file).ToLower();
    using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
    {
    //根据不同版本
    if (fileExt == ".xlsx")//2007版本
    {
    workbook = new XSSFWorkbook(fs);
    }
    else if (fileExt == ".xls")//2003版本
    {
    workbook = new HSSFWorkbook(fs);
    }
    else
    {
    workbook = null;
    }
    //获取第一个sheet页内容
    ISheet sheet = workbook.GetSheetAt(0);
    int count = workbook.NumberOfSheets;//获取sheet页总数量
    for (int z = 0; z < count; z++)
    {
    DataTable dt = new DataTable();
    dt.TableName = sheet.SheetName;
    sheet = workbook.GetSheetAt(z);
    //表头
    IRow header = sheet.GetRow(sheet.FirstRowNum);
    if (header == null) continue;
    List columns = new List();
    for (int i = 0; i < header.LastCellNum; i++)
    {
    columns.Add(i);
    ICell a = header.GetCell(i);//列名
    DataColumn dc = new DataColumn(a.ToString(), typeof(string));
    dt.Columns.Add(dc);
    }
    //数据值
    for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum - 1; i++)
    {
    DataRow dr = dt.NewRow();
    foreach (int j in columns)
    {
    if (sheet.GetRow(i) != null)
    dr[j] = sheet.GetRow(i).GetCell(j);
    }
    dt.Rows.Add(dr);
    }
    List list = ConvertViewModel(dt);
    if (list == null)
    {
    XtraMessageBox.Show("没有导入的数据,请检查表格里的数据格式是否正确");
    return null;
    }
    return list;
    }
    }
    }
    return null;
    }
    catch (Exception ex)
    {
    XtraMessageBox.Show($"{ex}");
    return null;
    }
    }

        public List<T> ConvertViewModel(DataTable dt)
        {
            List<T> items = new List<T>();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i]["题型"] == null || dt.Rows[i]["题目内容"] == null || dt.Rows[i]["答案"] == null)
                {
                    XtraMessageBox.Show("题型或者题目内容或者答案不能为空");
                    return null;
                }
                T item = new T();
                item.answer = dt.Rows[i]["答案"].ToString().Trim();
                item.option1 = dt.Rows[i]["选项1"].ToString().Trim();
                item.option2 = dt.Rows[i]["选项2"].ToString().Trim();
                item.option3 = dt.Rows[i]["选项3"].ToString().Trim();
                item.option4 = dt.Rows[i]["选项4"].ToString().Trim();
                item.option5 = dt.Rows[i]["选项5"].ToString().Trim();
                item.question_content = dt.Rows[i]["题目内容"].ToString().Trim()?.Replace("_____","(   )");
                item.question_type = GetQuestiontype(dt.Rows[i]["题型"].ToString().Trim());
                items.Add(item);
            }
            return items;
        }
  • 相关阅读:
    文章评论:级数中达朗贝尔判别法和柯西判别法之间的关系研究 By 彭军
    解析函数论 Page 22 达朗贝尔判别法 VS 柯西判别法
    解析函數論 Page 28 連續復變函數的最簡單的性質
    #2066:一个人的旅行(Dijkstra算法入门题)
    #2072 单词数(字符串流使用)
    传统的DOM渲染方式 吴小明
    【闭包】closure 吴小明
    报文 吴小明
    节流和防抖 吴小明
    什么是模块化?它有什么好处?常用的模块化开发的方案 吴小明
  • 原文地址:https://www.cnblogs.com/caozhengze/p/15787528.html
Copyright © 2011-2022 走看看