예제 #1
0
        /// <summary>
        /// 将Excel内的数据转化为HolidayChanges对象
        /// </summary>
        /// <param name="row">Excel行</param>
        /// <param name="columnOrder">列名顺序列表</param>
        /// <returns>HolidayChanges对象</returns>
        public static HolidayChanges GetHolidayChangesFromExcel(IRow row, List <int> columnOrder)
        {
            HolidayChanges holidayChanges = new HolidayChanges();

            holidayChanges.day  = DateTime.Parse(row.GetCell(columnOrder[0]).DateCellValue.ToString()).Date;
            holidayChanges.type = row.GetCell(columnOrder[1]).ToString();
            return(holidayChanges);
        }
예제 #2
0
        /// <summary>
        /// 将特殊日期信息从Excel表格导入到Mysql数据库
        /// </summary>
        /// <param name="folder_name">文件夹路径</param>
        /// <param name="file_name">文件名</param>
        public void ImportHolidayChangesToMySQL(string folder_name, string file_name)
        {
            string path_name = Path.Combine(folder_name, file_name);

            //检测文件是否存在
            if (!excelToSQLUtil.FileExistsOrNot(path_name))
            {
                return;
            }

            using (var stream = new FileStream(path_name, FileMode.Open))
            {
                stream.Position = 0;

                //获取sheet
                ISheet sheet = excelToSQLUtil.GetSheet(file_name, stream);
                if (sheet == null)
                {
                    return;
                }

                //获取列名顺序列表
                List <int> column_order_list = excelToSQLUtil.GetColumnOrderList(sheet, new List <string> {
                    "日期", "类型"
                });
                if (column_order_list == null)
                {
                    return;
                }

                IRow row = null;
                List <HolidayChanges> holiday_changes_list_original = new List <HolidayChanges>();
                List <HolidayChanges> holiday_changes_list          = new List <HolidayChanges>();

                using (var context = new Context())
                {
                    holiday_changes_list_original = context.HolidayChanges.AsNoTracking().ToList();
                    //数据库里已经有的数据数量
                    int alreadyHasCount = 0;

                    for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
                    {
                        row = sheet.GetRow(i);
                        if (row == null)
                        {
                            continue;
                        }
                        if (row.Cells.All(d => d.CellType == CellType.Blank))
                        {
                            continue;
                        }
                        HolidayChanges holiday_changes = excelToSQLUtil.GetHolidayChangesFromExcel(row, column_order_list);

                        //假如已经录入了,就避免再次录入
                        int alreadyExists = holiday_changes_list_original.Where(x => x.day == holiday_changes.day && x.type == holiday_changes.type).Count();
                        if (alreadyExists == 0)
                        {
                            holiday_changes_list.Add(holiday_changes);
                        }
                        else
                        {
                            alreadyHasCount++;
                        }
                    }

                    context.HolidayChanges.AddRange(holiday_changes_list);
                    var count = context.SaveChanges();
                    Console.WriteLine("此次录入 " + count + " 条数据," + ",重复数据 " + alreadyHasCount + " 条");
                }
            }
        }