logic/parser/TableExcelReader.cs

(开头部分) 14KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO;
using NPOI.XSSF.UserModel;
using System.Text.RegularExpressions;
using NPOI.SS.Formula.Functions;
using System.Text;

namespace tablegen2.logic
{
    public static class TableExcelReader
    {
        public static TableExcelData loadFromExcel(string filePath)
        {
            if (!File.Exists(filePath))
                throw new Exception(string.Format("{0} 文件不存在!", filePath));

            var ext = Path.GetExtension(filePath).ToLower();
            if (ext != ".xls" && ext != ".xlsx")
                throw new Exception(string.Format("无法识别的文件扩展名 {0}", ext));

            var headers = new List<TableExcelHeader>();
            var rows = new List<TableExcelRow>();
            
            var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
            var workbook = ext == ".xls" ? (IWorkbook)new HSSFWorkbook(fs) : (IWorkbook)new XSSFWorkbook(fs);
            fs.Close();

            _readDataFromWorkbook(workbook, headers, rows);

            return new TableExcelData(headers, rows);
        }


        private static void _readDataFromWorkbook(IWorkbook wb, List<TableExcelHeader> headers, List<TableExcelRow> rows)
        {
            var defSheetName = AppData.Config.SheetNameForField;
            var dataSheetName = AppData.Config.SheetNameForData;

            var sheet1 = wb.GetSheet(defSheetName);
            if (sheet1 == null)
                throw new Exception(string.Format("'{0}'工作簿不存在", defSheetName));

            var sheet2 = wb.GetSheet(dataSheetName);
            if (sheet2 == null)
                throw new Exception(string.Format("'{0}'工作簿不存在", dataSheetName));

            //加载字段
            _readHeadersFromDefSheet(sheet1, headers);

            //var h1 = headers.Find(a => a.FieldName == "ID");
            //if (h1 == null)
            //    throw new Exception(string.Format("'{0}'工作簿中不存在Id字段!", defSheetName));

           // var h2 = headers.Find(a => a.FieldName == "KeyName");
           // if (h2 == null)
           //     throw new Exception(string.Format("'{0}'工作簿中不存在KeyName字段!", defSheetName));

后面还有 318 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。