【发布时间】:2017-03-31 05:00:02
【问题描述】:
我正在开发一个应用程序,我必须使用滑动时间计算。我必须生成一个工具,它将获取 excel 值并计算一个月内所有员工的小时数。我知道如何在 sql server 中处理这个,但我不知道如何直接在数据表或数据集中处理。谁能帮我解决这个问题。到目前为止,我的代码如下。
using (var pck = new OfficeOpenXml.ExcelPackage())
{
using (var stream = File.OpenRead(path))
{
pck.Load(stream);
}
var ws = pck.Workbook.Worksheets.First();
System.Data.DataTable tbl = new System.Data.DataTable();
foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column])
{
tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column));
}
var startRow = hasHeader ? 2 : 1;
for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
DataRow row = tbl.Rows.Add();
foreach (var cell in wsRow)
{
row[cell.Start.Column - 1] = cell.Text;
}
}
return tbl;
}
if (Path.GetExtension(FileUpload1.FileName) == ".xlsx")
{
dt = GetDataTableFromExcel(URL, true);
}
从这里我会得到如下的数据表
+-----------+---------------------+------------+
| Employeid | Swipe dateTime | Event type |
+-----------+---------------------+------------+
| A | 01-01-2017 09:48:06 | IN |
| A | 01-01-2017 10:22:42 | OUT |
| B | 01-01-2017 10:22:56 | IN |
| B | 01-01-2017 10:36:46 | EXIT |
| C | 01-01-2017 10:37:04 | IN |
| C | 01-01-2017 12:52:57 | OUT |
+-----------+---------------------+------------+
现在我的任务是计算 IN 和 OUT 小时数,并直接在数据表中获取每个员工每天、每周和每月的工作时间。
请帮助我。
【问题讨论】:
-
此代码如何与您联系
Swipe hour problem?? -
我通过此代码获取excel数据并将数据存储在数据表中。现在这个数据表由empid、time、entry/exit组成。这三列包含所有数据。现在我必须将它们转换为一天、一周、一个月的滑动时间
-
你没有提供足够的细节,什么表结构什么列什么值。比展示您如何将数据填充到表中更好,向我们展示您的数据表中的内容以及该数据表的预期输出。
-
很高兴收到回复,我正在获取以下格式的 excel 值
-
excel 列值为 Employeid Swipedate 时间事件类型 A 01-01-2017 09:48:06 IN A 01-01-2017 10:22:42 OUT B 01-01-2017 10: 22:56 IN B 01-01-2017 10:36:46 EXIT C 01-01-2017 10:37:04 IN C 01-01-2017 12:52:57 OUT 我正在使用上述函数GetDataTableFromExcel(pathvalue,Boolean)。