From d6d2824f1d20aca03a174d6d660e4a14b5283be1 Mon Sep 17 00:00:00 2001 From: HI <15012290903@163.com> Date: Fri, 12 Jul 2024 14:56:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=A2=E4=BD=93=E4=BA=BA=E5=91=98=E5=90=8D?= =?UTF-8?q?=E5=8D=95Excel=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PEIS/App.config | 4 +- PEIS/Entity/BasePatient.cs | 22 ++ PEIS/PEIS.csproj | 3 + .../医院体检人员信息收集样表.xlsx | Bin 0 -> 87223 bytes PEIS/Utils/ExcelHelper.cs | 278 ++++++------------ PEIS/View/Base/PatientImportForm.Designer.cs | 241 ++++++--------- PEIS/View/Base/PatientImportForm.cs | 110 +++---- 7 files changed, 251 insertions(+), 407 deletions(-) create mode 100644 PEIS/ReportFiles/医院体检人员信息收集样表.xlsx diff --git a/PEIS/App.config b/PEIS/App.config index 7dea2e6..e1a080b 100644 --- a/PEIS/App.config +++ b/PEIS/App.config @@ -15,9 +15,9 @@ - + - + diff --git a/PEIS/Entity/BasePatient.cs b/PEIS/Entity/BasePatient.cs index 466435e..37ebcce 100644 --- a/PEIS/Entity/BasePatient.cs +++ b/PEIS/Entity/BasePatient.cs @@ -86,6 +86,28 @@ namespace PEIS.Entity } + /// + /// 验证 + /// + /// + public bool Validate() + { + if (string.IsNullOrEmpty(Name)) return false; + if (string.IsNullOrEmpty(Sex)) return false; + if (string.IsNullOrEmpty(Nation)) return false; + if (string.IsNullOrEmpty(Marriage)) return false; + if (CardNo?.Trim()?.Length != 18) return false; + var year = CardNo.Substring(6, 4); + var month = CardNo.Substring(10, 2); + var day = CardNo.Substring(12, 2); + var isDay = DateTime.TryParse($"{year}-{month}-{day}", out var birthday); + if (!isDay) return false; + Birthday = birthday; + CardType = "居民身份证"; + + + return true; + } public virtual bool Exits() { diff --git a/PEIS/PEIS.csproj b/PEIS/PEIS.csproj index 83cf1cb..4249c07 100644 --- a/PEIS/PEIS.csproj +++ b/PEIS/PEIS.csproj @@ -667,6 +667,9 @@ Always + + Always + diff --git a/PEIS/ReportFiles/医院体检人员信息收集样表.xlsx b/PEIS/ReportFiles/医院体检人员信息收集样表.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2369e0cc95ca8156d3f05c38c99d53f78b9b8606 GIT binary patch literal 87223 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 KcM`u^Nd6C|Df3+b literal 0 HcmV?d00001 diff --git a/PEIS/Utils/ExcelHelper.cs b/PEIS/Utils/ExcelHelper.cs index f30adb3..ce1d20d 100644 --- a/PEIS/Utils/ExcelHelper.cs +++ b/PEIS/Utils/ExcelHelper.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.IO; using System.Linq; using System.Windows.Forms; using NPOI.HSSF.UserModel; +using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using PEIS.Entity; @@ -12,9 +12,9 @@ namespace PEIS.Utils { public class ExcelHelper { - + private int StartRow = 4; public List SuccessList = new List(); - public List ErrorList = new List(); + public List ErrorList = new List(); public void ReadOrgPatientList() { try @@ -24,17 +24,7 @@ namespace PEIS.Utils dialog.Filter = @"Excel文件 (*.xls;*.xlsx)|*.xls;*.xlsx"; if (dialog.ShowDialog() != DialogResult.OK) return; var excelFilePath = dialog.FileName; - var fileExtension = Path.GetExtension(excelFilePath); - switch (fileExtension) - { - case ".xls": - ReadXLS(excelFilePath); - break; - - case ".xlsx": - ReadXLSX(excelFilePath); - break; - } + ReadExcelData(excelFilePath); } catch (Exception e) { @@ -42,215 +32,117 @@ namespace PEIS.Utils Global.Msg("err", e.Message); } } - ///

- /// 读取Excel XLS文件 + /// 读取Excel文件 /// - /// - public void ReadXLS(string excelFilePath) + /// 指定 .xlsx/.xls 文件的路径 + public void ReadExcelData(string excelFilePath) { + var fileExtension = Path.GetExtension(excelFilePath); + if (fileExtension != ".xls" && fileExtension != ".xlsx") return; using (var fileStream = new FileStream(excelFilePath, FileMode.Open, FileAccess.Read)) { - - // 使用 HSSFWorkbook 打开 .xls 文件 - var workbook = new HSSFWorkbook(fileStream); - // 选择工作表 第一个工作表 - var sheet = workbook.GetSheetAt(0); - // 获取工作表的行数 - var rowCount = sheet.PhysicalNumberOfRows; - int continuousEmpty = 0; - // 遍历工作表并读取数据 - for (var row = 3; row < rowCount; row++) + var sheet = GetSheet(fileStream, fileExtension); // 第一个工作表 + for (int startIndex = 0; startIndex < StartRow; startIndex++) { - if (continuousEmpty == 3) - { - break; // 如果连续三个错误,停止循环 - } - var dataRow = sheet.GetRow(row); - - var name = dataRow.GetCell(0).ToString(); - var cardNo = dataRow.GetCell(4)?.ToString(); - - if (string.IsNullOrEmpty(dataRow.GetCell(0).ToString()) - || !string.IsNullOrEmpty(cardNo) && cardNo.Length != 18 - || (cardNo?.Length == 18 && !DateTime.TryParseExact(cardNo.Substring(6, 8), "yyyyMMdd", null, - DateTimeStyles.None, out _))) - { - continuousEmpty++; - ErrorList.Add(new BasePatient() - { - ID = row, - Name = dataRow.GetCell(0).ToString(), - Sex = dataRow.GetCell(1).ToString(), - Marriage = dataRow.GetCell(2).ToString(), - Nation = dataRow.GetCell(3).ToString(), - CardNo = dataRow.GetCell(4).ToString(), - CardType = "居民身份证", - Education = dataRow.GetCell(5).ToString(), - Tel1 = dataRow.GetCell(6).ToString(), - Address1 = dataRow.GetCell(7).ToString(), - DeptName = dataRow.GetCell(8).ToString(), - }); - continue; - } - - SuccessList.Add(new BasePatient() - { - Name = name, - Sex = dataRow.GetCell(1).ToString(), - Marriage = dataRow.GetCell(2).ToString(), - Nation = dataRow.GetCell(3).ToString(), - CardNo = cardNo, - CardType = "居民身份证", - Education = dataRow.GetCell(5).ToString(), - Tel1 = dataRow.GetCell(6).ToString(), - Address1 = dataRow.GetCell(7).ToString(), - DeptName = dataRow.GetCell(8).ToString(), - }); - continuousEmpty = 0; + ErrorList.Add(new ExcelRowModel(startIndex, sheet.GetRow(startIndex))); } - }; - } - - /// - /// 读取Excel XLSX文件 - /// - /// 指定 .xlsx 文件的路径 - public void ReadXLSX(string excelFilePath) - { - using (var fileStream = new FileStream(excelFilePath, FileMode.Open, FileAccess.Read)) - { - var workbook = new XSSFWorkbook(fileStream); - var sheet = workbook.GetSheetAt(0); // 第一个工作表 - // 获取工作表的行数和列数 var rowCount = sheet.PhysicalNumberOfRows; - int continuousEmpty = 0; // 遍历工作表并读取数据 - for (var row = 2; row < rowCount; row++) + for (var row = StartRow; row < rowCount; row++) { - if (continuousEmpty == 3) + if (continuousEmpty == 5) { - break; // 如果连续三个错误,停止循环 + break; // 如果连续5行错误,停止循环 } var dataRow = sheet.GetRow(row); - var name = dataRow.GetCell(0).ToString(); - var cardNo = dataRow.GetCell(4)?.ToString(); - if (string.IsNullOrEmpty(dataRow.GetCell(0).ToString()) || !string.IsNullOrEmpty(cardNo) && cardNo.Length != 18 || (cardNo?.Length == 18 && !DateTime.TryParseExact(cardNo.Substring(6, 8), "yyyyMMdd", null, - DateTimeStyles.None, out _))) + var readPatient = ReadRowToBasePatient(dataRow); + var isBasePatient = readPatient.Validate(); + if (!isBasePatient || SuccessList.Any(p => p.CardNo == readPatient.CardNo)) { continuousEmpty++; - ErrorList.Add(new BasePatient() - { - ID = row, - Name = dataRow.GetCell(0).ToString(), - Sex = dataRow.GetCell(1).ToString(), - Marriage = dataRow.GetCell(2).ToString(), - Nation = dataRow.GetCell(3).ToString(), - CardNo = dataRow.GetCell(4).ToString(), - CardType = "居民身份证", - Education = dataRow.GetCell(5).ToString(), - Tel1 = dataRow.GetCell(6).ToString(), - Address1 = dataRow.GetCell(7).ToString(), - DeptName = dataRow.GetCell(8).ToString(), - }); + ErrorList.Add(new ExcelRowModel(row, dataRow)); continue; } - - SuccessList.Add(new BasePatient() - { - Name = name, - Sex = dataRow.GetCell(1).ToString(), - Marriage = dataRow.GetCell(2).ToString(), - Nation = dataRow.GetCell(3).ToString(), - CardNo = cardNo, - CardType = "居民身份证", - Education = dataRow.GetCell(5).ToString(), - Tel1 = dataRow.GetCell(6).ToString(), - Address1 = dataRow.GetCell(7).ToString(), - DeptName = dataRow.GetCell(8).ToString(), - }); + SuccessList.Add(readPatient); continuousEmpty = 0; } }; } - - // /// - // /// 导出Excel - // /// - // /// - // /// - // /// - // private MemoryStream ExportExcel(List list, string propertyStr) - // { - // var properties = propertyStr.Split(',').ToList(); - // using (var package = new ExcelPackage()) - // { - // // 添加工作表 - // var worksheet = package.Workbook.Worksheets.Add($"{DateTime.Now:yyyyMMdd}"); - // // 将列名添加到第一行 - // for (var i = 0; i < properties.Count; i++) - // { - // if (Properties.ContainsKey(properties[i])) - // worksheet.Cells[1, i + 1].Value = Properties[(properties[i])]; - // } - // // 将数据写入单元格 - // for (var row = 0; row < list.Count; row++) - // { - // for (var col = 0; col < properties.Count; col++) - // { - // worksheet.Cells[row + 2, col + 1].Value = GetValueByPropertyNameHandle(list[row], properties[col]); - // } - // } - // // 自动调整列宽 - // worksheet.Cells.AutoFitColumns(); - // // 保存文件到 MemoryStream - // var memoryStream = new MemoryStream(package.GetAsByteArray()); - // // 设置流的位置为起始位置 - // memoryStream.Seek(0, SeekOrigin.Begin); - // // 返回 Excel 文件 - // return memoryStream; - // } - // } - - /// - /// 可选字段 - /// - private static Dictionary Properties = new Dictionary() + private static ISheet GetSheet(FileStream fileStream, string fileExtension) { - {"Id", "id"}, - {"CriticalName", "项目名称"}, - {"CriticalCode", "项目代码"}, - {"CriticalValue", "危急值"}, - {"Description", "描述"}, - {"Unit", "单位"}, - }; + if (fileExtension == ".xls") + return new HSSFWorkbook(fileStream).GetSheetAt(0); - - /// - /// 根据属性名获取对象的属性值 - /// - /// - /// - /// - private string GetValueByPropertyNameHandle(EnrollmentPatient patient, string propertyName) + if (fileExtension == ".xlsx") + return new XSSFWorkbook(fileStream).GetSheetAt(0); // 第一个工作表 + return null; + } + private static BasePatient ReadRowToBasePatient(IRow dataRow) { - switch (propertyName) + var sex = dataRow.GetCell(2)?.ToString()??""; + return new BasePatient() { - case "Id": - return patient.ID.ToString(); - case "Name": - return patient.Name; - case "Age": - return patient.Age + " " + patient.AgeClass; - default: - return ""; - } + // A-0-序号,B-1-姓名,C-2-性别,D-3-民族,E-4-婚姻,F-5-身份证号,G-6-住址,H-7-电话,I-8-部门,J-9备注 + Name = dataRow.GetCell(1)?.ToString(), + Sex = sex.Contains("女")?"2":"1", + Nation = dataRow.GetCell(3)?.ToString(), + Marriage = dataRow.GetCell(4)?.ToString(), + CardNo = dataRow.GetCell(5)?.ToString(), + CardType = "居民身份证", + Address1 = dataRow.GetCell(6)?.ToString(), + Tel1 = dataRow.GetCell(7)?.ToString(), + DeptName = dataRow.GetCell(8)?.ToString(), + }; } + } -} + public class ExcelRowModel + { + public int RowCount { get; set; } + public string ColumnA { get; set; } + public string ColumnB { get; set; } + public string ColumnC { get; set; } + public string ColumnD { get; set; } + public string ColumnE { get; set; } + public string ColumnF { get; set; } + public string ColumnG { get; set; } + public string ColumnH { get; set; } + public string ColumnI { get; set; } + public string ColumnJ { get; set; } + public ExcelRowModel() + { + } + public ExcelRowModel(int rowCount, IRow row) + { + RowCount = rowCount + 1; + ColumnA = row.GetCell(0)?.ToString()??""; + ColumnB = row.GetCell(1)?.ToString()??""; + ColumnC = row.GetCell(2)?.ToString()??""; + ColumnD = row.GetCell(3)?.ToString()??""; + ColumnE = row.GetCell(4)?.ToString()??""; + ColumnF = row.GetCell(5)?.ToString()??""; + ColumnG = row.GetCell(6)?.ToString()??""; + ColumnH = row.GetCell(7)?.ToString()??""; + ColumnI = row.GetCell(8)?.ToString()??""; + ColumnJ = row.GetCell(9)?.ToString()??""; + } + public ExcelRowModel(BasePatient p) + { + ColumnA = p.Name; + ColumnB = p.Sex; + ColumnC = p.Nation; + ColumnD = p.Marriage; + ColumnE = p.CardNo; + ColumnF = p.CardType; + ColumnG = p.Address1; + ColumnH = p.Tel1; + ColumnI = p.DeptName; + } + } } \ No newline at end of file diff --git a/PEIS/View/Base/PatientImportForm.Designer.cs b/PEIS/View/Base/PatientImportForm.Designer.cs index 87278ad..adf0993 100644 --- a/PEIS/View/Base/PatientImportForm.Designer.cs +++ b/PEIS/View/Base/PatientImportForm.Designer.cs @@ -65,15 +65,6 @@ this.DgcError = new DevExpress.XtraGrid.GridControl(); this.DgvError = new DevExpress.XtraGrid.Views.Grid.GridView(); this.colNo = new DevExpress.XtraGrid.Columns.GridColumn(); - this.gridColumn7 = new DevExpress.XtraGrid.Columns.GridColumn(); - this.gridColumn8 = new DevExpress.XtraGrid.Columns.GridColumn(); - this.gridColumn14 = new DevExpress.XtraGrid.Columns.GridColumn(); - this.gridColumn15 = new DevExpress.XtraGrid.Columns.GridColumn(); - this.gridColumn16 = new DevExpress.XtraGrid.Columns.GridColumn(); - this.gridColumn17 = new DevExpress.XtraGrid.Columns.GridColumn(); - this.gridColumn19 = new DevExpress.XtraGrid.Columns.GridColumn(); - this.gridColumn21 = new DevExpress.XtraGrid.Columns.GridColumn(); - this.gridColumn27 = new DevExpress.XtraGrid.Columns.GridColumn(); this.repositoryItemComboBox1 = new DevExpress.XtraEditors.Repository.RepositoryItemComboBox(); this.repositoryItemComboBox2 = new DevExpress.XtraEditors.Repository.RepositoryItemComboBox(); this.repositoryItemComboBox3 = new DevExpress.XtraEditors.Repository.RepositoryItemComboBox(); @@ -90,6 +81,15 @@ this.gridColumn36 = new DevExpress.XtraGrid.Columns.GridColumn(); this.panel2 = new System.Windows.Forms.Panel(); this.label1 = new System.Windows.Forms.Label(); + this.gridColumn7 = new DevExpress.XtraGrid.Columns.GridColumn(); + this.gridColumn8 = new DevExpress.XtraGrid.Columns.GridColumn(); + this.gridColumn14 = new DevExpress.XtraGrid.Columns.GridColumn(); + this.gridColumn15 = new DevExpress.XtraGrid.Columns.GridColumn(); + this.gridColumn16 = new DevExpress.XtraGrid.Columns.GridColumn(); + this.gridColumn17 = new DevExpress.XtraGrid.Columns.GridColumn(); + this.gridColumn19 = new DevExpress.XtraGrid.Columns.GridColumn(); + this.gridColumn21 = new DevExpress.XtraGrid.Columns.GridColumn(); + this.gridColumn27 = new DevExpress.XtraGrid.Columns.GridColumn(); this.gridColumn37 = new DevExpress.XtraGrid.Columns.GridColumn(); this.panel1.SuspendLayout(); this.OpsPatient.SuspendLayout(); @@ -582,133 +582,11 @@ // colNo // this.colNo.Caption = "Excel行号"; - this.colNo.FieldName = "id"; + this.colNo.FieldName = "RowCount"; this.colNo.Name = "colNo"; this.colNo.Visible = true; this.colNo.VisibleIndex = 0; // - // gridColumn7 - // - this.gridColumn7.AppearanceCell.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.gridColumn7.AppearanceCell.Options.UseFont = true; - this.gridColumn7.Caption = "姓名"; - this.gridColumn7.FieldName = "Name"; - this.gridColumn7.Name = "gridColumn7"; - this.gridColumn7.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn7.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn7.OptionsColumn.ReadOnly = true; - this.gridColumn7.OptionsFilter.AllowFilter = false; - this.gridColumn7.Visible = true; - this.gridColumn7.VisibleIndex = 1; - this.gridColumn7.Width = 100; - // - // gridColumn8 - // - this.gridColumn8.AppearanceCell.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.gridColumn8.AppearanceCell.Options.UseFont = true; - this.gridColumn8.Caption = "性别"; - this.gridColumn8.FieldName = "Sex"; - this.gridColumn8.Name = "gridColumn8"; - this.gridColumn8.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn8.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn8.OptionsColumn.ReadOnly = true; - this.gridColumn8.OptionsFilter.AllowFilter = false; - this.gridColumn8.Visible = true; - this.gridColumn8.VisibleIndex = 2; - this.gridColumn8.Width = 50; - // - // gridColumn14 - // - this.gridColumn14.AppearanceCell.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.gridColumn14.AppearanceCell.Options.UseFont = true; - this.gridColumn14.Caption = "婚况"; - this.gridColumn14.FieldName = "Marriage"; - this.gridColumn14.Name = "gridColumn14"; - this.gridColumn14.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn14.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn14.OptionsColumn.ReadOnly = true; - this.gridColumn14.OptionsFilter.AllowFilter = false; - this.gridColumn14.Visible = true; - this.gridColumn14.VisibleIndex = 3; - this.gridColumn14.Width = 60; - // - // gridColumn15 - // - this.gridColumn15.Caption = "民族"; - this.gridColumn15.FieldName = "Nation"; - this.gridColumn15.Name = "gridColumn15"; - this.gridColumn15.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn15.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn15.OptionsColumn.ReadOnly = true; - this.gridColumn15.Visible = true; - this.gridColumn15.VisibleIndex = 4; - this.gridColumn15.Width = 100; - // - // gridColumn16 - // - this.gridColumn16.Caption = "身份证号"; - this.gridColumn16.FieldName = "CardNo"; - this.gridColumn16.Name = "gridColumn16"; - this.gridColumn16.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn16.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn16.OptionsColumn.ReadOnly = true; - this.gridColumn16.OptionsFilter.AllowFilter = false; - this.gridColumn16.Visible = true; - this.gridColumn16.VisibleIndex = 5; - this.gridColumn16.Width = 140; - // - // gridColumn17 - // - this.gridColumn17.AppearanceCell.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.gridColumn17.AppearanceCell.Options.UseFont = true; - this.gridColumn17.Caption = "教育程度"; - this.gridColumn17.FieldName = "Education"; - this.gridColumn17.Name = "gridColumn17"; - this.gridColumn17.OptionsColumn.AllowEdit = false; - this.gridColumn17.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn17.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn17.OptionsColumn.ReadOnly = true; - this.gridColumn17.OptionsFilter.AllowFilter = false; - this.gridColumn17.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { - new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, "BloodCode", "合计:{0} 个血袋")}); - this.gridColumn17.Visible = true; - this.gridColumn17.VisibleIndex = 6; - this.gridColumn17.Width = 93; - // - // gridColumn19 - // - this.gridColumn19.Caption = "联系电话"; - this.gridColumn19.FieldName = "Tel1"; - this.gridColumn19.Name = "gridColumn19"; - this.gridColumn19.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn19.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn19.OptionsColumn.ReadOnly = true; - this.gridColumn19.Visible = true; - this.gridColumn19.VisibleIndex = 7; - this.gridColumn19.Width = 100; - // - // gridColumn21 - // - this.gridColumn21.Caption = "联系地址"; - this.gridColumn21.FieldName = "Address1"; - this.gridColumn21.MinWidth = 200; - this.gridColumn21.Name = "gridColumn21"; - this.gridColumn21.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn21.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn21.OptionsColumn.ReadOnly = true; - this.gridColumn21.Visible = true; - this.gridColumn21.VisibleIndex = 8; - this.gridColumn21.Width = 300; - // - // gridColumn27 - // - this.gridColumn27.Caption = "部门"; - this.gridColumn27.FieldName = "DeptName"; - this.gridColumn27.Name = "gridColumn27"; - this.gridColumn27.Visible = true; - this.gridColumn27.VisibleIndex = 9; - this.gridColumn27.Width = 187; - // // repositoryItemComboBox1 // this.repositoryItemComboBox1.AutoHeight = false; @@ -877,18 +755,85 @@ this.label1.Text = "导入失败列表:"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // + // gridColumn7 + // + this.gridColumn7.Caption = "A"; + this.gridColumn7.FieldName = "ColumnA"; + this.gridColumn7.Name = "gridColumn7"; + this.gridColumn7.Visible = true; + this.gridColumn7.VisibleIndex = 1; + // + // gridColumn8 + // + this.gridColumn8.Caption = "B"; + this.gridColumn8.FieldName = "ColumnB"; + this.gridColumn8.Name = "gridColumn8"; + this.gridColumn8.Visible = true; + this.gridColumn8.VisibleIndex = 2; + // + // gridColumn14 + // + this.gridColumn14.Caption = "C"; + this.gridColumn14.FieldName = "ColumnC"; + this.gridColumn14.Name = "gridColumn14"; + this.gridColumn14.Visible = true; + this.gridColumn14.VisibleIndex = 3; + // + // gridColumn15 + // + this.gridColumn15.Caption = "D"; + this.gridColumn15.FieldName = "ColumnD"; + this.gridColumn15.Name = "gridColumn15"; + this.gridColumn15.Visible = true; + this.gridColumn15.VisibleIndex = 4; + // + // gridColumn16 + // + this.gridColumn16.Caption = "E"; + this.gridColumn16.FieldName = "ColumnE"; + this.gridColumn16.Name = "gridColumn16"; + this.gridColumn16.Visible = true; + this.gridColumn16.VisibleIndex = 5; + // + // gridColumn17 + // + this.gridColumn17.Caption = "F"; + this.gridColumn17.FieldName = "ColumnF"; + this.gridColumn17.Name = "gridColumn17"; + this.gridColumn17.Visible = true; + this.gridColumn17.VisibleIndex = 6; + // + // gridColumn19 + // + this.gridColumn19.Caption = "G"; + this.gridColumn19.FieldName = "ColumnG"; + this.gridColumn19.Name = "gridColumn19"; + this.gridColumn19.Visible = true; + this.gridColumn19.VisibleIndex = 7; + // + // gridColumn21 + // + this.gridColumn21.Caption = "H"; + this.gridColumn21.FieldName = "ColumnH"; + this.gridColumn21.Name = "gridColumn21"; + this.gridColumn21.Visible = true; + this.gridColumn21.VisibleIndex = 8; + // + // gridColumn27 + // + this.gridColumn27.Caption = "I"; + this.gridColumn27.FieldName = "ColumnI"; + this.gridColumn27.Name = "gridColumn27"; + this.gridColumn27.Visible = true; + this.gridColumn27.VisibleIndex = 9; + // // gridColumn37 // - this.gridColumn37.Caption = "失败原因"; - this.gridColumn37.FieldName = "ImportErrorInfo"; + this.gridColumn37.Caption = "J"; + this.gridColumn37.FieldName = "ColumnJ"; this.gridColumn37.Name = "gridColumn37"; - this.gridColumn37.OptionsColumn.AllowEdit = false; - this.gridColumn37.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False; - this.gridColumn37.OptionsColumn.ReadOnly = true; - this.gridColumn37.OptionsFilter.AllowFilter = false; this.gridColumn37.Visible = true; this.gridColumn37.VisibleIndex = 10; - this.gridColumn37.Width = 125; // // PatientImportForm // @@ -965,15 +910,6 @@ private DevExpress.XtraGrid.GridControl DgcError; private DevExpress.XtraGrid.Views.Grid.GridView DgvError; private DevExpress.XtraGrid.Columns.GridColumn colNo; - private DevExpress.XtraGrid.Columns.GridColumn gridColumn7; - private DevExpress.XtraGrid.Columns.GridColumn gridColumn8; - private DevExpress.XtraGrid.Columns.GridColumn gridColumn14; - private DevExpress.XtraGrid.Columns.GridColumn gridColumn15; - private DevExpress.XtraGrid.Columns.GridColumn gridColumn16; - private DevExpress.XtraGrid.Columns.GridColumn gridColumn17; - private DevExpress.XtraGrid.Columns.GridColumn gridColumn19; - private DevExpress.XtraGrid.Columns.GridColumn gridColumn21; - private DevExpress.XtraGrid.Columns.GridColumn gridColumn27; private DevExpress.XtraEditors.Repository.RepositoryItemComboBox repositoryItemComboBox1; private DevExpress.XtraEditors.Repository.RepositoryItemComboBox repositoryItemComboBox2; private DevExpress.XtraEditors.Repository.RepositoryItemComboBox repositoryItemComboBox3; @@ -990,6 +926,15 @@ private DevExpress.XtraGrid.Columns.GridColumn gridColumn36; private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Label label1; + private DevExpress.XtraGrid.Columns.GridColumn gridColumn7; + private DevExpress.XtraGrid.Columns.GridColumn gridColumn8; + private DevExpress.XtraGrid.Columns.GridColumn gridColumn14; + private DevExpress.XtraGrid.Columns.GridColumn gridColumn15; + private DevExpress.XtraGrid.Columns.GridColumn gridColumn16; + private DevExpress.XtraGrid.Columns.GridColumn gridColumn17; + private DevExpress.XtraGrid.Columns.GridColumn gridColumn19; + private DevExpress.XtraGrid.Columns.GridColumn gridColumn21; + private DevExpress.XtraGrid.Columns.GridColumn gridColumn27; private DevExpress.XtraGrid.Columns.GridColumn gridColumn37; } } \ No newline at end of file diff --git a/PEIS/View/Base/PatientImportForm.cs b/PEIS/View/Base/PatientImportForm.cs index 6cb796e..b946734 100644 --- a/PEIS/View/Base/PatientImportForm.cs +++ b/PEIS/View/Base/PatientImportForm.cs @@ -14,11 +14,11 @@ namespace PEIS.View.Base { public partial class PatientImportForm : ViewBase { - protected override object CreatePresenter() { return new Presenter(this); } + private List _lstPatient = new List(); // 定义一个委托 @@ -44,18 +44,21 @@ namespace PEIS.View.Base private void TsmiDown_Click(object sender, EventArgs e) { - var file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", "体检基本信息登记表.xls"); + // var file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", "体检基本信息登记表.xls"); + var file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ReportFiles", "医院体检人员信息收集样表.xlsx"); if (!File.Exists(file)) { Global.MsgErr(@"未找到模板文件!"); return; } + // 创建文件目标路径(用户选择的位置) using (var folderDialog = new FolderBrowserDialog()) { if (folderDialog.ShowDialog() != DialogResult.OK) return; var targetFolderPath = folderDialog.SelectedPath; - var targetFilePath = Path.Combine(targetFolderPath, "体检基本信息登记表.xls"); + // var targetFilePath = Path.Combine(targetFolderPath, "体检基本信息登记表.xls"); + var targetFilePath = Path.Combine(targetFolderPath, "医院体检人员信息收集样表.xlsx"); try { // 复制文件 @@ -83,100 +86,77 @@ namespace PEIS.View.Base Global.MsgInfo($"数据为空,请导入数据!"); return; } + int succeedCount = 0; - var errorList = new List(); + var errorList = new List(); _lstPatient = new List(); var createTime = DateTime.Now; foreach (var item in _patients) { try { - var birthday = DateTime.Today; - if (item.CardNo.Length == 18 && DateTime.TryParseExact(item.CardNo.Substring(6, 8), "yyyyMMdd", null, - DateTimeStyles.None, out DateTime result)) - { - birthday = result; - } - - var basePatient = new BasePatient() - { - Name = item.Name?.Trim(), - Sex = item.Sex == "女" ? "2" : "1", - Nation = item.Nation, - Birthday = birthday, - CardType = "居民身份证", - CardNo = item.CardNo, - Marriage = item.Marriage, - Occupation = item.Occupation, - Education = item.Education, - Contactor1 = item.Name, - Contactor2 = item.Contactor2, - Tel1 = item.Tel1, - Tel2 = item.Tel2, - Address1 = item.Address1, - Address2 = item.Address2, - Description = item.Description, - CreateTime = createTime, - Creator = Global.currentUser.Name, - CreatorCode = Global.currentUser.Code - }; - + var basePatient = item; + basePatient.CreateTime = createTime; + basePatient.Creator = Global.currentUser.Name; + basePatient.CreatorCode = Global.currentUser.Code; if (!basePatient.Exits()) { - // item.ImportErrorInfo = "身份证号已存在"; - // errorList.Add(item); - // continue; if (!basePatient.Save()) { item.ImportErrorInfo = "信息保存失败"; - errorList.Add(item); + errorList.Add(new ExcelRowModel(item)); continue; } } - - succeedCount++; - var sql = $@"SELECT ID,Name,Sex,CardNo, CardType, Birthday, Education, Nation, Tel1, Tel2,Marriage,Address1 + succeedCount++; + var sql = + $@"SELECT ID,Name,Sex,CardNo, CardType, Birthday, Education, Nation, Tel1, Tel2,Marriage,Address1 FROM Base_Patient WHERE Name='{basePatient.Name}' AND CardNo = '{basePatient.CardNo}' "; var add = (DAOHelp.GetDataBySQL(sql).FirstOrDefault()); - if (add != null) - _lstPatient?.Add(new BaseOrgPatient - { - OID = _org.ID, - PID = add.ID, - Seq = _lstPatient.Count + 1, - Name = add.Name, - Sex = add.Sex == "1" ? "男" : "女", - CardNo = add.CardNo, - CardType = add.CardType, - Birthday = add.Birthday, - Education = add.Education, - Nation = add.Nation, - Tel1 = add.Tel1, - Tel2 = add.Tel2, - Marriage = add.Marriage, - DeptName = item.DeptName, - Address1 = add.Address1 - }); + if (add == null) + { + errorList.Add(new ExcelRowModel(item)); + continue; + } + + _lstPatient?.Add(new BaseOrgPatient + { + OID = _org.ID, + PID = add.ID, + Seq = _lstPatient.Count + 1, + Name = add.Name, + Sex = add.Sex == "1" ? "男" : "女", + CardNo = add.CardNo, + CardType = add.CardType, + Birthday = add.Birthday, + Education = add.Education, + Nation = add.Nation, + Tel1 = add.Tel1, + Tel2 = add.Tel2, + Marriage = add.Marriage, + DeptName = item.DeptName, + Address1 = add.Address1 + }); } catch (Exception ex) { item.ImportErrorInfo = "错误:" + ex.Message; - errorList.Add(item); + errorList.Add(new ExcelRowModel(item)); } } if (errorList.Count > 0) { - Global.MsgErr($"添加成功:{succeedCount},添加失败:{ errorList.Count}。"); + Global.MsgErr($"添加成功:{succeedCount},添加失败:{errorList.Count}。"); DgcPatient.DataSource = null; DgcError.DataSource = errorList; } else { - Global.MsgInfo($"添加成功!"); + Global.MsgInfo($"添加成功:{succeedCount}!"); ImportFormClosed?.Invoke(_lstPatient); Close(); } @@ -191,10 +171,12 @@ FROM Base_Patient WHERE Name='{basePatient.Name}' AND CardNo = '{basePatient.Car { var excel = new ExcelHelper(); excel.ReadOrgPatientList(); - var list = excel.SuccessList.Where(p=>!string.IsNullOrEmpty(p.CardNo)).ToList().Distinct().ToList(); + var list = excel.SuccessList; _patients = list.Count > 0 ? list : new List(); + label1.Text = "导入失败列表:" + $@"(已从Excel成功读取到 {excel.SuccessList.Count}行 数据)"; DgcPatient.DataSource = _patients; DgcError.DataSource = excel.ErrorList.Distinct(); + DgvError.BestFitColumns(); } } } \ No newline at end of file