using System;
|
using System.Collections.Generic;
|
using System.IO;
|
|
namespace IStation.WinFrmUI.Monitor
|
{
|
/// <summary>
|
///
|
/// </summary>
|
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;
|
}
|
|
|
}
|
}
|