using System; namespace IStation.WinFrmUI.Monitor { /// /// /// public class ParseExcelHelper { //public static string ParseExcel(string fileName, List<(DateTime Time,double Flow,double Head)> list) //{ // list = new List<(DateTime Time, double Flow, double Head)>(); // try // { // if (!File.Exists(fileName)) // return "文件不存在"; // int line = 0; // //初始化文件 // NPOI.HSSF.UserModel.HSSFWorkbook theBook = null; // using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite)) // { // theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file); // } // //检查表格是否符合 // NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1"); // if (sheet1 == null) // { // sheet1 = theBook.GetSheetAt(0); // if (sheet1 == null) // return ("无Sheet数据"); // } // //标题行 // int title_line_index = 0; // //流量列 // int col_index_t = 0; // //流量列 // int col_index_q = 1; // //扬程列 // int col_index_h = 2; // var row_title = sheet1.GetRow(title_line_index); // if (row_title == null) // { // return ("第一行第一列不能空"); // } // //开始读取的行 // int start_line = title_line_index + 1; // var cell_0 = row_title.GetCell(0); // if (cell_0 == null) // { // return ("无法读取表头文件"); // } // NPOI.SS.UserModel.IRow row_temp = null; // NPOI.SS.UserModel.ICell cell; // for (line = start_line; line < 1000; line++) // { // row_temp = sheet1.GetRow(line); // if (row_temp == null) // break; // cell = row_temp.GetCell(col_index_t); // if (cell == null) // break; // if (!ParseCellValue(cell, out DateTime time)) // break; // cell = row_temp.GetCell(col_index_q); // if (cell == null) // break; // if (!ParseCellValue(cell, out double flow)) // break; // if (flow < 0) // break; // cell = row_temp.GetCell(col_index_h); // if (cell == null) // break; // if (!ParseCellValue(cell, out double head)) // break; // if (head < 0) // break; // qh.Add(new Model.CurvePoint(flow, head)); // qe.Add(new Model.CurvePoint(flow, eff)); // qp.Add(new Model.CurvePoint(flow, power)); // } // return ""; // } // catch (Exception ex) // { // return "文件异常!"; // } //} private static bool ParseCellValue(NPOI.SS.UserModel.ICell cell, out double cell_value) { cell_value = 0; if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric) { cell_value = cell.NumericCellValue; return true; } if (cell.CellType == NPOI.SS.UserModel.CellType.String) { if (double.TryParse(cell.StringCellValue, out double value)) { cell_value = value; return true; } } return false; } private static bool ParseCellValue(NPOI.SS.UserModel.ICell cell, out DateTime cell_value) { cell_value = DateTime.MinValue; if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric) { cell_value = cell.DateCellValue; return true; } if (cell.CellType == NPOI.SS.UserModel.CellType.String) { if (DateTime.TryParse(cell.StringCellValue, out DateTime value)) { cell_value = value; return true; } } return false; } } }