Merge branch 'master' of https://github.com/shanghohui-Company/SolarPower
This commit is contained in:
commit
03c2bc0a46
@ -58,39 +58,39 @@ namespace SolarPower.Repository.Implement
|
||||
SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then a.KWH end) ''inv_', right(INVERTERID, 4), '''')
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then a.KWH end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation};
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m-%d %H'') report_date, ', @sql,
|
||||
', b.KWH hourKWH, round((b.KWH / (SELECT MAX(TODAYKWH) FROM power_station_history_hour WHERE DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}'' and powerstationid = {post.PowerStation}))*100,2) ''hourKWHp'', d.irradiance ''irradiance'', d.Temperature ''temperature'',
|
||||
b.money ''hourmoney'', c.TODAYKWH ''totKWH'', c.KWHKWP ''totKWHKWP'', c.money ''totmoney'', stationName, powerRate daymoney, c.SOLARHOUR tothour,round(b.PR, 2) as pr
|
||||
FROM inverter_history_hour a left join
|
||||
( # 每小時加總 inv
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'') report_date, siteid, sitetype, round(KWH, 2) KWH,
|
||||
round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP, round(PR, 2) PR, round(money, 2) money
|
||||
from power_station_history_hour
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) b on a.powerStationid = b.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d %H:%i'') = b.report_date
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'') report_date, siteid, sitetype, round(KWH, 2) KWH,
|
||||
round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP, round(PR, 2) PR, round(money, 2) money
|
||||
from power_station_history_hour
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) b on a.powerStationid = b.powerStationid and DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d %H:%i'') = b.report_date
|
||||
left join
|
||||
( # day
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, sitetype, round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP
|
||||
, round(PR, 2) PR, round(money, 2) money , round(SOLARHOUR, 2) SOLARHOUR
|
||||
from power_station_history_day
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) c on a.powerStationid = c.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d'') = c.report_date
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, sitetype, round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP
|
||||
, round(PR, 2) PR, round(money, 2) money , round(SOLARHOUR, 2) SOLARHOUR
|
||||
from power_station_history_day
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) c on a.powerStationid = c.powerStationid and DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d'') = c.report_date
|
||||
left join
|
||||
(
|
||||
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'')report_date, irradiance, Temperature
|
||||
from sensor_history_hour
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}''
|
||||
select powerStationID, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'')report_date, irradiance, Temperature
|
||||
from sensor_history_hour
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) d on a.powerStationid = d.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d %H:%i'') = d.report_date
|
||||
join
|
||||
(
|
||||
select id, name stationName, powerRate from power_station where id = {post.PowerStation}
|
||||
select id, name stationName, powerRate from power_station where id = {post.PowerStation}
|
||||
)z on a.powerstationid = z.id
|
||||
where DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}''
|
||||
GROUP BY DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'')
|
||||
order by DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d %H:%i'') ');
|
||||
GROUP BY DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d %H:%i'')
|
||||
order by DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d %H:%i'') ');
|
||||
|
||||
#select @sql as 'mySelect'; #顯示動態語法
|
||||
PREPARE stmt FROM @sql;
|
||||
@ -104,9 +104,9 @@ namespace SolarPower.Repository.Implement
|
||||
SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 4), '''')
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation};
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql,
|
||||
',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR,
|
||||
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||
@ -151,9 +151,9 @@ namespace SolarPower.Repository.Implement
|
||||
sql = @$"SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 4), '''')
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation};
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql,
|
||||
',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR,
|
||||
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||
@ -200,9 +200,9 @@ namespace SolarPower.Repository.Implement
|
||||
SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 4), '''')
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation};
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%Y/%m'') report_date, ', @sql,
|
||||
',b.todayKWH ''dayKWH'', round((b.todayKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', c.PR,
|
||||
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||
@ -390,9 +390,9 @@ namespace SolarPower.Repository.Implement
|
||||
SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then a.KWH end) ''inv_', right(INVERTERID, 4), '''')
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then a.KWH end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation};
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m-%d %H'') report_date, ', @sql,
|
||||
', b.KWH hourKWH, round((b.KWH / (SELECT MAX(TODAYKWH) FROM power_station_history_hour WHERE DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}'' and powerstationid = {post.PowerStation}))*100,2) ''hourKWHp'', d.irradiance ''irradiance'', d.Temperature ''temperature'',
|
||||
b.money ''hourmoney'', c.TODAYKWH ''totKWH'', c.KWHKWP ''totKWHKWP'', c.money ''totmoney'', stationName, powerRate daymoney, c.SOLARHOUR tothour,round(b.PR, 2) as pr
|
||||
@ -401,8 +401,8 @@ namespace SolarPower.Repository.Implement
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d %H:%i'') report_date, siteid, sitetype, round(KWH, 2) KWH,
|
||||
round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP, round(PR, 2) PR, round(money, 2) money
|
||||
from power_station_history_hour
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) b on a.powerStationid = b.powerStationid and DATE_FORMAT(a.TIMESTAMP,''%Y-%m-%d %H:%i'') = b.report_date
|
||||
where powerstationid = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,''%Y-%m-%d'') = ''{post.Time}''
|
||||
) b on a.powerStationid = b.powerStationid and DATE_FORMAT(a.`TIMESTAMP`,''%Y-%m-%d %H:%i'') = b.report_date
|
||||
left join
|
||||
( # day
|
||||
select powerStationid, DATE_FORMAT(TIMESTAMP,''%Y-%m-%d'') report_date, sitetype, round(TODAYKWH, 2) TODAYKWH,round(KWHKWP, 2) KWHKWP
|
||||
@ -436,9 +436,9 @@ namespace SolarPower.Repository.Implement
|
||||
SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 4), '''')
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation};
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql,
|
||||
',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR,
|
||||
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||
@ -483,9 +483,9 @@ namespace SolarPower.Repository.Implement
|
||||
sql = @$"SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 4), '''')
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation};
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%m/%d'') report_date, ', @sql,
|
||||
',b.TODAYKWH ''dayKWH'', round((b.TODAYKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', b.PR,
|
||||
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||
@ -531,9 +531,9 @@ namespace SolarPower.Repository.Implement
|
||||
SET @sql = NULL;
|
||||
SELECT
|
||||
GROUP_CONCAT(DISTINCT
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 4), '''')
|
||||
CONCAT('max(case when INVERTERID = ''', INVERTERID, ''' then round(a.KWH, 2) end) ''inv_', right(INVERTERID, 2), '''')
|
||||
) INTO @sql
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation};
|
||||
FROM inverter_history_hour where powerstationId = {post.PowerStation} and DATE_FORMAT(`TIMESTAMP`,'%Y-%m-%d') = '{post.Time}';
|
||||
SET @sql = CONCAT('SELECT DATE_FORMAT(a.TIMESTAMP,''%Y/%m'') report_date, ', @sql,
|
||||
',b.todayKWH ''dayKWH'', round((b.todayKWH / c.monthKWH)*100,2) ''dayKWHp'', b.SOLARHOUR ''tothour'', b.KWHKWP ''KWHKWP'', c.PR,
|
||||
d.irradiance ''irradiance'', d.Temperature ''temperature'', b.money ''soldmoney'',
|
||||
|
||||
91
solarApp/Service/excelHelper.cs
Normal file
91
solarApp/Service/excelHelper.cs
Normal file
@ -0,0 +1,91 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
// ref https://www.c-sharpcorner.com/article/read-excel-file-in-c-sharp-winform/
|
||||
//using Microsoft.Office.Interop.Excel;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Data;
|
||||
using Microsoft.Office.Interop;
|
||||
|
||||
namespace solarApp.Service
|
||||
{
|
||||
public class excelHelper
|
||||
{
|
||||
void readExcel(string fname, ref System.Data.DataTable dt) {
|
||||
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
|
||||
Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(fname);
|
||||
Microsoft.Office.Interop.Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
|
||||
Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.UsedRange;
|
||||
|
||||
int rowCount = xlRange.Rows.Count;
|
||||
int colCount = xlRange.Columns.Count;
|
||||
DataRow mydr;
|
||||
// dt.Column = colCount;
|
||||
//dataGridView1.ColumnCount = colCount;
|
||||
//dataGridView1.RowCount = rowCount;
|
||||
|
||||
for (int i = 1; i <= rowCount; i++)
|
||||
{
|
||||
mydr = dt.NewRow();
|
||||
for (int j = 1; j <= colCount; j++)
|
||||
{
|
||||
//write the value to the Grid
|
||||
if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null)
|
||||
{
|
||||
//dataGridView1.Rows[i - 1].Cells[j - 1].Value = xlRange.Cells[i, j].Value2.ToString();
|
||||
}
|
||||
// Console.Write(xlRange.Cells[i, j].Value2.ToString() + "\t");
|
||||
//add useful things here!
|
||||
}
|
||||
}
|
||||
|
||||
//cleanup
|
||||
GC.Collect();
|
||||
GC.WaitForPendingFinalizers();
|
||||
|
||||
//rule of thumb for releasing com objects:
|
||||
// never use two dots, all COM objects must be referenced and released individually
|
||||
// ex: [somthing].[something].[something] is bad
|
||||
|
||||
//release com objects to fully kill excel process from running in the background
|
||||
Marshal.ReleaseComObject(xlRange);
|
||||
Marshal.ReleaseComObject(xlWorksheet);
|
||||
|
||||
//close and release
|
||||
xlWorkbook.Close();
|
||||
Marshal.ReleaseComObject(xlWorkbook);
|
||||
|
||||
//quit and release
|
||||
xlApp.Quit();
|
||||
Marshal.ReleaseComObject(xlApp);
|
||||
}
|
||||
|
||||
//public void ReadSample()
|
||||
//{
|
||||
// Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
|
||||
// if (excelApp != null)
|
||||
// {
|
||||
// Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(@"C:\test.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
|
||||
// Microsoft.Office.Interop.Excel.Worksheet excelWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkbook.Sheets[1];
|
||||
|
||||
// Excel.Range excelRange = excelWorksheet.UsedRange;
|
||||
// int rowCount = excelRange.Rows.Count;
|
||||
// int colCount = excelRange.Columns.Count;
|
||||
|
||||
// for (int i = 1; i <= rowCount; i++)
|
||||
// {
|
||||
// for (int j = 1; j <= colCount; j++)
|
||||
// {
|
||||
// Excel.Range range = (excelWorksheet.Cells[i, 1] as Excel.Range);
|
||||
// string cellValue = range.Value.ToString();
|
||||
|
||||
// //do anything
|
||||
// }
|
||||
// }
|
||||
|
||||
// excelWorkbook.Close();
|
||||
// excelApp.Quit();
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
@ -387,5 +387,70 @@ namespace solarApp.Service
|
||||
return result;
|
||||
}
|
||||
|
||||
bool insert_meter() {
|
||||
bool result = false;
|
||||
using (MySqlConnection conn = new MySqlConnection(Connection1))
|
||||
{
|
||||
conn.Open();
|
||||
try
|
||||
{
|
||||
//先判斷是否存在 meter
|
||||
string ss = $@"SELECT TABLE_NAME FROM information_schema.tables WHERE table_schema = '" + _siteDB + "' AND table_name = 's" + _siteID01 + "' ";
|
||||
List<string> ds_meter = conn.Query<string>(ss, new { siteID = _siteID01 }).AsList<string>();
|
||||
|
||||
if (ds_meter.Count == 0) return false;
|
||||
|
||||
//每小時 table ex:s02202000101_meter
|
||||
ss = @$"delete from solar_master.meter_history_hour where PowerStationId = " + _powerStationID + @" and left(`TIMESTAMP`, 10) = @date1;
|
||||
INSERT INTO solar_master.meter_history_hour(PowerStationId, `TIMESTAMP`, METERID, V_AB, V_BC, V_CA, I_A, I_B, I_C, P, F, INPUT_KWH, OUTPUT_KWH)
|
||||
SELECT " + _powerStationID + @" as PowerStationId, m1.`timestamp`, m1.METERID, m1.V_AB, m1.V_BC, m1.V_CA, m1.I_A, m1.I_B, m1.I_C, m1.P, m1.F, m2.INPUT_KWH, m2.OUTPUT_KWH
|
||||
FROM ( -- 取得平均值
|
||||
SELECT FROM_UNIXTIME(m.timestamp / 1000, '%Y-%m-%d %H') AS `timestamp`, m.METERID, AVG(m.V_AB) AS V_AB,
|
||||
AVG(m.V_BC) AS V_BC, AVG(m.V_CA) AS V_CA, AVG(m.I_A) AS I_A, AVG(m.I_B) AS I_B, AVG(m.I_C) AS I_C, AVG(m.P) AS P, AVG(m.F) AS F
|
||||
FROM " + _siteDB + ".s" + _siteID01 + @"_meter m
|
||||
WHERE FROM_UNIXTIME(m.timestamp / 1000, '%Y-%m-%d %H') = @date1
|
||||
GROUP BY FROM_UNIXTIME(m.timestamp / 1000, '%Y-%m-%d %H'), m.METERID
|
||||
) m1
|
||||
LEFT JOIN ( -- 取得整點值INPUT_KWH, OUTPUT_KWH
|
||||
SELECT FROM_UNIXTIME(m.timestamp / 1000, '%Y-%m-%d %H') AS `timestamp`, m.METERID, m.INPUT_KWH AS INPUT_KWH, m.OUTPUT_KWH AS OUTPUT_KWH
|
||||
FROM " + _siteDB + ".s" + _siteID01 + @" m
|
||||
WHERE LEFT(FROM_UNIXTIME(m.timestamp / 1000, '%Y-%m-%d %H'), 10) = @date1
|
||||
AND RIGHT(FROM_UNIXTIME(m.timestamp / 1000, '%Y-%m-%d %H'), 2) = '55' ) m2
|
||||
ON m1.timestamp = m2.timestamp AND m1.METERID = m2.METERID;";
|
||||
conn.Execute(ss, new { date1 = _date1 });
|
||||
|
||||
//每天
|
||||
ss = @$" delete from solar_master.meter_history_day where PowerStationId = " + _powerStationID + @" and left(`TIMESTAMP`, 10) = @date1;
|
||||
INSERT INTO solar_master.meter_history_day(PowerStationId, `TIMESTAMP`, METERID, V_AB, V_BC, V_CA, I_A, I_B, I_C, P, F, INPUT_KWH, OUTPUT_KWH)
|
||||
SELECT m.PowerStationId, DATE_FORMAT(m.TIMESTAMP, '%Y-%m-%d') AS TIMESTAMP, m.METERID, AVG(m.V_AB) AS V_AB,
|
||||
AVG(m.V_BC) AS V_BC, AVG(m.V_CA) AS V_CA, AVG(m.I_A) AS I_A, AVG(m.I_B) AS I_B, AVG(m.I_C) AS I_C,
|
||||
AVG(m.P) AS P, AVG(m.F) AS F, AVG(m.INPUT_KWH) AS INPUT_KWH, AVG(m.OUTPUT_KWH) AS OUTPUT_KWH
|
||||
FROM meter_history_hour m
|
||||
WHERE DATE_FORMAT(m.TIMESTAMP, '%Y-%m-%d') = @date1 AND m.PowerStationId = @PowerStationId
|
||||
GROUP BY DATE_FORMAT(m.TIMESTAMP, '%Y-%m-%d'), m.METERID;";
|
||||
conn.Execute(ss, new { powerStationID = _powerStationID, date1 = _date1 });
|
||||
|
||||
//每月
|
||||
ss = @$" delete from solar_master.meter_history_month where PowerStationId = " + _powerStationID + @" and left(`TIMESTAMP`, 10) = @date1;
|
||||
INSERT INTO solar_master.meter_history_month(PowerStationId, `TIMESTAMP`, METERID, V_AB, V_BC, V_CA, I_A, I_B, I_C, P, F, INPUT_KWH, OUTPUT_KWH)
|
||||
SELECT m.PowerStationId, DATE_FORMAT(m.TIMESTAMP, '%Y-%m') AS TIMESTAMP, m.METERID, AVG(m.V_AB) AS V_AB, AVG(m.V_BC) AS V_BC, AVG(m.V_CA) AS V_CA,
|
||||
AVG(m.I_A) AS I_A, AVG(m.I_B) AS I_B, AVG(m.I_C) AS I_C, AVG(m.P) AS P,
|
||||
AVG(m.F) AS F, AVG(m.INPUT_KWH) AS INPUT_KWH, AVG(m.OUTPUT_KWH) AS OUTPUT_KWH
|
||||
FROM meter_history_day m
|
||||
WHERE DATE_FORMAT(m.TIMESTAMP, '%Y-%m') = '2021-07'
|
||||
AND m.PowerStationId = 1
|
||||
GROUP BY DATE_FORMAT(m.TIMESTAMP, '%Y-%m'), m.METERID;";
|
||||
conn.Execute(ss, new { powerStationID = _powerStationID, date1 = _date1 });
|
||||
result = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
conn.Close();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
60
solarApp/fmArchive.Designer.cs
generated
60
solarApp/fmArchive.Designer.cs
generated
@ -32,12 +32,14 @@ namespace solarApp
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.lbmsg = new System.Windows.Forms.Label();
|
||||
this.dtSelect2 = new System.Windows.Forms.DateTimePicker();
|
||||
this.bt_archive = new System.Windows.Forms.Button();
|
||||
this.bt_clear_sensor = new System.Windows.Forms.Button();
|
||||
this.bt_clear_station = new System.Windows.Forms.Button();
|
||||
this.bt_clear_inv = new System.Windows.Forms.Button();
|
||||
this.fp_site = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.dtSelect = new System.Windows.Forms.DateTimePicker();
|
||||
this.dtSelect1 = new System.Windows.Forms.DateTimePicker();
|
||||
this.bt_site = new System.Windows.Forms.Button();
|
||||
this.bt_Inv = new System.Windows.Forms.Button();
|
||||
this.bt_Sensor = new System.Windows.Forms.Button();
|
||||
@ -90,12 +92,14 @@ namespace solarApp
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lbmsg);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.dtSelect2);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_archive);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_clear_sensor);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_clear_station);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_clear_inv);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.fp_site);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.dtSelect);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.dtSelect1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_site);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_Inv);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.bt_Sensor);
|
||||
@ -109,12 +113,28 @@ namespace solarApp
|
||||
this.splitContainer1.SplitterWidth = 10;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// lbmsg
|
||||
//
|
||||
this.lbmsg.AutoSize = true;
|
||||
this.lbmsg.Location = new System.Drawing.Point(15, 591);
|
||||
this.lbmsg.Name = "lbmsg";
|
||||
this.lbmsg.Size = new System.Drawing.Size(20, 19);
|
||||
this.lbmsg.TabIndex = 10;
|
||||
this.lbmsg.Text = "~";
|
||||
//
|
||||
// dtSelect2
|
||||
//
|
||||
this.dtSelect2.Location = new System.Drawing.Point(15, 616);
|
||||
this.dtSelect2.Name = "dtSelect2";
|
||||
this.dtSelect2.Size = new System.Drawing.Size(145, 27);
|
||||
this.dtSelect2.TabIndex = 9;
|
||||
//
|
||||
// bt_archive
|
||||
//
|
||||
this.bt_archive.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_archive.Location = new System.Drawing.Point(15, 796);
|
||||
this.bt_archive.Location = new System.Drawing.Point(9, 825);
|
||||
this.bt_archive.Name = "bt_archive";
|
||||
this.bt_archive.Size = new System.Drawing.Size(282, 100);
|
||||
this.bt_archive.Size = new System.Drawing.Size(282, 71);
|
||||
this.bt_archive.TabIndex = 8;
|
||||
this.bt_archive.Text = "單日歸檔";
|
||||
this.bt_archive.UseVisualStyleBackColor = true;
|
||||
@ -124,7 +144,7 @@ namespace solarApp
|
||||
//
|
||||
this.bt_clear_sensor.Enabled = false;
|
||||
this.bt_clear_sensor.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_clear_sensor.Location = new System.Drawing.Point(15, 634);
|
||||
this.bt_clear_sensor.Location = new System.Drawing.Point(10, 663);
|
||||
this.bt_clear_sensor.Name = "bt_clear_sensor";
|
||||
this.bt_clear_sensor.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_clear_sensor.TabIndex = 7;
|
||||
@ -136,7 +156,7 @@ namespace solarApp
|
||||
//
|
||||
this.bt_clear_station.Enabled = false;
|
||||
this.bt_clear_station.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_clear_station.Location = new System.Drawing.Point(15, 734);
|
||||
this.bt_clear_station.Location = new System.Drawing.Point(10, 763);
|
||||
this.bt_clear_station.Name = "bt_clear_station";
|
||||
this.bt_clear_station.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_clear_station.TabIndex = 6;
|
||||
@ -148,7 +168,7 @@ namespace solarApp
|
||||
//
|
||||
this.bt_clear_inv.Enabled = false;
|
||||
this.bt_clear_inv.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_clear_inv.Location = new System.Drawing.Point(15, 684);
|
||||
this.bt_clear_inv.Location = new System.Drawing.Point(10, 713);
|
||||
this.bt_clear_inv.Name = "bt_clear_inv";
|
||||
this.bt_clear_inv.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_clear_inv.TabIndex = 5;
|
||||
@ -161,21 +181,21 @@ namespace solarApp
|
||||
this.fp_site.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.fp_site.Location = new System.Drawing.Point(0, 0);
|
||||
this.fp_site.Name = "fp_site";
|
||||
this.fp_site.Size = new System.Drawing.Size(300, 583);
|
||||
this.fp_site.Size = new System.Drawing.Size(300, 553);
|
||||
this.fp_site.TabIndex = 4;
|
||||
//
|
||||
// dtSelect
|
||||
// dtSelect1
|
||||
//
|
||||
this.dtSelect.Location = new System.Drawing.Point(15, 601);
|
||||
this.dtSelect.Name = "dtSelect";
|
||||
this.dtSelect.Size = new System.Drawing.Size(204, 27);
|
||||
this.dtSelect.TabIndex = 3;
|
||||
this.dtSelect.ValueChanged += new System.EventHandler(this.dtSelect_ValueChanged);
|
||||
this.dtSelect1.Location = new System.Drawing.Point(15, 559);
|
||||
this.dtSelect1.Name = "dtSelect1";
|
||||
this.dtSelect1.Size = new System.Drawing.Size(145, 27);
|
||||
this.dtSelect1.TabIndex = 3;
|
||||
this.dtSelect1.ValueChanged += new System.EventHandler(this.dtSelect_ValueChanged);
|
||||
//
|
||||
// bt_site
|
||||
//
|
||||
this.bt_site.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_site.Location = new System.Drawing.Point(164, 734);
|
||||
this.bt_site.Location = new System.Drawing.Point(159, 763);
|
||||
this.bt_site.Name = "bt_site";
|
||||
this.bt_site.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_site.TabIndex = 2;
|
||||
@ -186,7 +206,7 @@ namespace solarApp
|
||||
// bt_Inv
|
||||
//
|
||||
this.bt_Inv.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_Inv.Location = new System.Drawing.Point(162, 684);
|
||||
this.bt_Inv.Location = new System.Drawing.Point(157, 713);
|
||||
this.bt_Inv.Name = "bt_Inv";
|
||||
this.bt_Inv.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_Inv.TabIndex = 1;
|
||||
@ -197,7 +217,7 @@ namespace solarApp
|
||||
// bt_Sensor
|
||||
//
|
||||
this.bt_Sensor.Font = new System.Drawing.Font("Microsoft JhengHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_Sensor.Location = new System.Drawing.Point(162, 634);
|
||||
this.bt_Sensor.Location = new System.Drawing.Point(157, 663);
|
||||
this.bt_Sensor.Name = "bt_Sensor";
|
||||
this.bt_Sensor.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_Sensor.TabIndex = 0;
|
||||
@ -250,6 +270,7 @@ namespace solarApp
|
||||
this.lbSiteDB_sensor.Size = new System.Drawing.Size(79, 24);
|
||||
this.lbSiteDB_sensor.TabIndex = 11;
|
||||
this.lbSiteDB_sensor.Text = "Site_DB";
|
||||
this.lbSiteDB_sensor.Click += new System.EventHandler(this.lbSiteDB_sensor_Click);
|
||||
//
|
||||
// lbSiteID_sensor
|
||||
//
|
||||
@ -295,6 +316,7 @@ namespace solarApp
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.PerformLayout();
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
@ -313,7 +335,7 @@ namespace solarApp
|
||||
private System.Windows.Forms.DataGridView dataGridView1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.DateTimePicker dtSelect;
|
||||
private System.Windows.Forms.DateTimePicker dtSelect1;
|
||||
private System.Windows.Forms.Button bt_site;
|
||||
private System.Windows.Forms.Button bt_Inv;
|
||||
private System.Windows.Forms.Button bt_Sensor;
|
||||
@ -327,5 +349,7 @@ namespace solarApp
|
||||
private System.Windows.Forms.Button bt_clear_station;
|
||||
private System.Windows.Forms.Button bt_archive;
|
||||
private System.Windows.Forms.Button bt_clear_sensor;
|
||||
private System.Windows.Forms.Label lbmsg;
|
||||
private System.Windows.Forms.DateTimePicker dtSelect2;
|
||||
}
|
||||
}
|
||||
@ -24,7 +24,7 @@ namespace solarApp
|
||||
|
||||
private void bt_Sensor_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procSensorSvc sensorSvc = new procSensorSvc();
|
||||
//sensorSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
@ -84,7 +84,7 @@ namespace solarApp
|
||||
|
||||
private void bt_Inv_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procInvSvc invSvc = new procInvSvc();
|
||||
//invSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
@ -102,14 +102,14 @@ namespace solarApp
|
||||
bt_clear_inv.Enabled = true;
|
||||
bt_clear_station.Enabled = true;
|
||||
bt_clear_sensor.Enabled = true;
|
||||
bt_clear_inv.Text = "clear " + dtSelect.Value.ToString("MM-dd");
|
||||
bt_clear_station.Text = "clear " + dtSelect.Value.ToString("MM-dd");
|
||||
bt_clear_sensor.Text = "clear " + dtSelect.Value.ToString("MM-dd");
|
||||
bt_clear_inv.Text = "clear " + dtSelect1.Value.ToString("MM-dd");
|
||||
bt_clear_station.Text = "clear " + dtSelect1.Value.ToString("MM-dd");
|
||||
bt_clear_sensor.Text = "clear " + dtSelect1.Value.ToString("MM-dd");
|
||||
}
|
||||
|
||||
private void bt_clear_inv_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procInvSvc invSvc = new procInvSvc();
|
||||
invSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
@ -124,7 +124,7 @@ namespace solarApp
|
||||
|
||||
private void bt_clear_station_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procStationSvc siteSvc = new procStationSvc();
|
||||
siteSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
@ -139,7 +139,7 @@ namespace solarApp
|
||||
|
||||
private void bt_site_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procStationSvc siteSvc = new procStationSvc();
|
||||
//siteSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
@ -161,7 +161,7 @@ namespace solarApp
|
||||
|
||||
private void bt_clear_sensor_Click(object sender, EventArgs e)
|
||||
{
|
||||
string date1 = dtSelect.Value.ToString("yyyy-MM-dd");
|
||||
string date1 = dtSelect1.Value.ToString("yyyy-MM-dd");
|
||||
//procSensorSvc sensorSvc = new procSensorSvc(lbSiteDB_sensor.Text, lbSiteID_sensor.Text, date1, date1);
|
||||
procSensorSvc sensorSvc = new procSensorSvc();
|
||||
sensorSvc._siteDB = lbSiteDB_sensor.Text;
|
||||
@ -173,5 +173,11 @@ namespace solarApp
|
||||
//sensorSvc.archiveData();
|
||||
MessageBox.Show("OK");
|
||||
}
|
||||
|
||||
private void lbSiteDB_sensor_Click(object sender, EventArgs e)
|
||||
{
|
||||
fmExcel fm = new fmExcel();
|
||||
fm.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
16
solarApp/fmExcel.Designer.cs
generated
16
solarApp/fmExcel.Designer.cs
generated
@ -102,7 +102,7 @@ namespace solarApp
|
||||
// bt_inv_hour_hj
|
||||
//
|
||||
this.bt_inv_hour_hj.Font = new System.Drawing.Font("Microsoft JhengHei UI", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_inv_hour_hj.Location = new System.Drawing.Point(5, 251);
|
||||
this.bt_inv_hour_hj.Location = new System.Drawing.Point(0, 186);
|
||||
this.bt_inv_hour_hj.Name = "bt_inv_hour_hj";
|
||||
this.bt_inv_hour_hj.Size = new System.Drawing.Size(143, 44);
|
||||
this.bt_inv_hour_hj.TabIndex = 7;
|
||||
@ -117,14 +117,14 @@ namespace solarApp
|
||||
this.bt_clear_station.Name = "bt_clear_station";
|
||||
this.bt_clear_station.Size = new System.Drawing.Size(135, 44);
|
||||
this.bt_clear_station.TabIndex = 6;
|
||||
this.bt_clear_station.Text = "clear data";
|
||||
this.bt_clear_station.Text = "AUO Insert ";
|
||||
this.bt_clear_station.UseVisualStyleBackColor = true;
|
||||
this.bt_clear_station.Visible = false;
|
||||
this.bt_clear_station.Click += new System.EventHandler(this.bt_clear_station_Click);
|
||||
//
|
||||
// bt_inv_day_hj
|
||||
//
|
||||
this.bt_inv_day_hj.Font = new System.Drawing.Font("Microsoft JhengHei UI", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_inv_day_hj.Location = new System.Drawing.Point(5, 335);
|
||||
this.bt_inv_day_hj.Location = new System.Drawing.Point(0, 270);
|
||||
this.bt_inv_day_hj.Name = "bt_inv_day_hj";
|
||||
this.bt_inv_day_hj.Size = new System.Drawing.Size(143, 44);
|
||||
this.bt_inv_day_hj.TabIndex = 5;
|
||||
@ -215,7 +215,7 @@ namespace solarApp
|
||||
// bt_hour_archive_hj
|
||||
//
|
||||
this.bt_hour_archive_hj.Font = new System.Drawing.Font("Microsoft JhengHei UI", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_hour_archive_hj.Location = new System.Drawing.Point(154, 251);
|
||||
this.bt_hour_archive_hj.Location = new System.Drawing.Point(149, 186);
|
||||
this.bt_hour_archive_hj.Name = "bt_hour_archive_hj";
|
||||
this.bt_hour_archive_hj.Size = new System.Drawing.Size(146, 44);
|
||||
this.bt_hour_archive_hj.TabIndex = 10;
|
||||
@ -226,7 +226,7 @@ namespace solarApp
|
||||
// bt_day_archive_hj
|
||||
//
|
||||
this.bt_day_archive_hj.Font = new System.Drawing.Font("Microsoft JhengHei UI", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.bt_day_archive_hj.Location = new System.Drawing.Point(154, 335);
|
||||
this.bt_day_archive_hj.Location = new System.Drawing.Point(149, 270);
|
||||
this.bt_day_archive_hj.Name = "bt_day_archive_hj";
|
||||
this.bt_day_archive_hj.Size = new System.Drawing.Size(119, 44);
|
||||
this.bt_day_archive_hj.TabIndex = 9;
|
||||
@ -257,13 +257,13 @@ namespace solarApp
|
||||
this.tabControl.Size = new System.Drawing.Size(1782, 853);
|
||||
this.tabControl.TabIndex = 1;
|
||||
//
|
||||
// bt_day_achive_hj
|
||||
// fmExcel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 19F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1782, 853);
|
||||
this.Controls.Add(this.tabControl);
|
||||
this.Name = "bt_day_achive_hj";
|
||||
this.Name = "fmExcel";
|
||||
this.Text = "fmExcel";
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||
this.panel1.ResumeLayout(false);
|
||||
|
||||
@ -67,67 +67,97 @@ namespace solarApp
|
||||
dataGridView1.DataSource = csvSvc.insertHour2DB(ref dt);
|
||||
MessageBox.Show("OK");
|
||||
}
|
||||
protected void ImportFile()
|
||||
{
|
||||
protected void ImporExcel()
|
||||
{
|
||||
string fname = "";
|
||||
OpenFileDialog fdlg = new OpenFileDialog();
|
||||
fdlg.Title = "Excel File Dialog";
|
||||
fdlg.InitialDirectory = @"c:\";
|
||||
fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
|
||||
fdlg.FilterIndex = 2;
|
||||
fdlg.RestoreDirectory = true;
|
||||
if (fdlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
fname = fdlg.FileName;
|
||||
}
|
||||
else return;
|
||||
|
||||
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
|
||||
Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(fname);
|
||||
Microsoft.Office.Interop.Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
|
||||
Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.UsedRange;
|
||||
|
||||
int rowCount = xlRange.Rows.Count;
|
||||
int colCount = xlRange.Columns.Count;
|
||||
|
||||
//fdlg.Title = "Excel File Dialog";
|
||||
//fdlg.InitialDirectory = @"d:\temp\";
|
||||
//fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
|
||||
//fdlg.FilterIndex = 2;
|
||||
//fdlg.RestoreDirectory = true;
|
||||
//if (fdlg.ShowDialog() == DialogResult.OK)
|
||||
//{
|
||||
// fname = fdlg.FileName;
|
||||
//}
|
||||
//else return;
|
||||
//取得選取檔案的路徑
|
||||
//string dir = Path.GetDirectoryName(fname);
|
||||
// 取得路徑下所有檔案
|
||||
//string[] fileEntries = System.IO.Directory.GetFiles(dir);
|
||||
string[] fileEntries = Directory.GetFiles(@"D:\temp\AUO\台中太平\台中太平\inverter", "*.*", SearchOption.AllDirectories);
|
||||
|
||||
// dt.Column = colCount;
|
||||
dataGridView1.ColumnCount = colCount;
|
||||
dataGridView1.RowCount = rowCount;
|
||||
|
||||
for (int i = 1; i <= rowCount; i++)
|
||||
|
||||
System.Data.DataTable dt = new System.Data.DataTable();
|
||||
DataColumn mydc;
|
||||
bool isFirst = true; bool isFirstData = true;
|
||||
|
||||
foreach (string fileName in fileEntries)
|
||||
{
|
||||
for (int j = 1; j <= colCount; j++)
|
||||
{
|
||||
//write the value to the Grid
|
||||
if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null)
|
||||
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
|
||||
Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(fileName);
|
||||
Microsoft.Office.Interop.Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
|
||||
Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.UsedRange;
|
||||
//dataGridView1.ColumnCount = colCount;
|
||||
//dataGridView1.RowCount = rowCount;
|
||||
int rowCount = xlRange.Rows.Count;
|
||||
int colCount = xlRange.Columns.Count;
|
||||
for (int i = 1; i <= rowCount; i++)
|
||||
{
|
||||
#region dt add column
|
||||
if (isFirst)
|
||||
{
|
||||
dataGridView1.Rows[i - 1].Cells[j - 1].Value = xlRange.Cells[i, j].Value2.ToString();
|
||||
for (int j = 1; j <= colCount; j++)
|
||||
{
|
||||
int col = 0;
|
||||
col = j + 1;
|
||||
mydc = new DataColumn(col.ToString());
|
||||
dt.Columns.Add(mydc);
|
||||
isFirst = false;
|
||||
}
|
||||
}
|
||||
// Console.Write(xlRange.Cells[i, j].Value2.ToString() + "\t");
|
||||
//add useful things here!
|
||||
#endregion
|
||||
DataRow row = dt.NewRow();
|
||||
|
||||
for (int j = 0; j <= colCount-1; j++)
|
||||
{
|
||||
if (isFirstData) // 第一筆資料為 欄位名稱
|
||||
{
|
||||
Microsoft.Office.Interop.Excel.Range range = xlRange.Cells[i, j+1] as Microsoft.Office.Interop.Excel.Range;
|
||||
row[j] = range.Value.ToString();
|
||||
isFirstData = false;
|
||||
}
|
||||
else if (i == 0) continue;
|
||||
else //從第二個檔案 開始都從第二個 row 開始
|
||||
{
|
||||
Microsoft.Office.Interop.Excel.Range range = xlRange.Cells[i, j+1] as Microsoft.Office.Interop.Excel.Range;
|
||||
row[j] = range.Value.ToString();
|
||||
}
|
||||
}
|
||||
dt.Rows.Add(row);
|
||||
}
|
||||
}
|
||||
//release com objects to fully kill excel process from running in the background
|
||||
Marshal.ReleaseComObject(xlRange);
|
||||
Marshal.ReleaseComObject(xlWorksheet);
|
||||
|
||||
//close and release
|
||||
xlWorkbook.Close();
|
||||
Marshal.ReleaseComObject(xlWorkbook);
|
||||
|
||||
//quit and release
|
||||
xlApp.Quit();
|
||||
Marshal.ReleaseComObject(xlApp);
|
||||
}
|
||||
|
||||
//cleanup
|
||||
GC.Collect();
|
||||
GC.WaitForPendingFinalizers();
|
||||
|
||||
MessageBox.Show(" dt.Rows.Count = " + dt.Rows.Count.ToString());
|
||||
//rule of thumb for releasing com objects:
|
||||
// never use two dots, all COM objects must be referenced and released individually
|
||||
// ex: [somthing].[something].[something] is bad
|
||||
|
||||
//release com objects to fully kill excel process from running in the background
|
||||
Marshal.ReleaseComObject(xlRange);
|
||||
Marshal.ReleaseComObject(xlWorksheet);
|
||||
|
||||
//close and release
|
||||
xlWorkbook.Close();
|
||||
Marshal.ReleaseComObject(xlWorkbook);
|
||||
|
||||
//quit and release
|
||||
xlApp.Quit();
|
||||
Marshal.ReleaseComObject(xlApp);
|
||||
|
||||
// ex: [somthing].[something].[something] is bad
|
||||
}
|
||||
|
||||
private void bt_inv_day_hj_Click(object sender, EventArgs e)
|
||||
@ -191,5 +221,10 @@ namespace solarApp
|
||||
csvSvc.archive_data("hour");
|
||||
MessageBox.Show("ok");
|
||||
}
|
||||
|
||||
private void bt_clear_station_Click(object sender, EventArgs e)
|
||||
{
|
||||
ImporExcel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user