C#,Asp.NET 导入Excel,时间格式一串数字转换.

在Excel中.日期或者时间格式为:42093.6506944444 或者 0.650694444444444

大于0 表示有日期(2015-03-30),小于零则是时间(15:37)

在C# 导入读取这列时,转换会发生错误;

现在将这格式转换为正常的日期格式:如下

 1 /// <summary>
 2     /// 数字转换时间格式
 3     /// </summary>
 4     /// <param name="timeStr">数字,如:42095.7069444444/0.650694444444444</param>
 5     /// <returns>日期/时间格式</returns>
 6     private string ToDateTimeValue(string strNumber)
 7     {
 8         if (!string.IsNullOrWhiteSpace(strNumber))
 9         {
10             Decimal tempValue;
11             //先检查 是不是数字;
12             if (Decimal.TryParse(strNumber, out tempValue))
13             {
14                 //天数,取整
15                 int day = Convert.ToInt32(Math.Truncate(tempValue));
16                 //这里也不知道为什么. 如果是小于32,则减1,否则减2
17                 //日期从1900-01-01开始累加
18                 // day = day < 32 ? day - 1 : day - 2;
19                 DateTime dt = new DateTime(1900, 1, 1).AddDays(day < 32 ? (day - 1) : (day - 2));
20
21                 //小时:减掉天数,这个数字转换小时:(* 24)
22                 Decimal hourTemp = (tempValue - day) * 24;//获取小时数
23                 //取整.小时数
24                 int hour = Convert.ToInt32(Math.Truncate(hourTemp));
25                 //分钟:减掉小时,( * 60)
26                 //这里舍入,否则取值会有1分钟误差.
27                 Decimal minuteTemp = Math.Round((hourTemp - hour) * 60, 2);//获取分钟数
28                 int minute = Convert.ToInt32(Math.Truncate(minuteTemp));
29                 //秒:减掉分钟,( * 60)
30                 //这里舍入,否则取值会有1秒误差.
31                 Decimal secondTemp = Math.Round((minuteTemp - minute) * 60, 2);//获取秒数
32                 int second = Convert.ToInt32(Math.Truncate(secondTemp));
33
34                 //时间格式:00:00:00
35                 string resultTimes = string.Format("{0}:{1}:{2}",
36                         (hour < 10 ? ("0" + hour) : hour.ToString()),
37                         (minute < 10 ? ("0" + minute) : minute.ToString()),
38                         (second < 10 ? ("0" + second) : second.ToString()));
39
40                 if (day > 0)
41                     return string.Format("{0} {1}", dt.ToString("yyyy-MM-dd"), resultTimes);
42                 else
43                     return resultTimes;
44             }
45         }
46         return string.Empty;
47     }
时间: 2024-11-05 22:54:04

C#,Asp.NET 导入Excel,时间格式一串数字转换.的相关文章

[bug] - 关于poi导入excel时间格式会减少8小时的问题.

这个bug发生在使用poi组件导入导出excel时,(这里是导入) 首先在excel中的格式设定是 yyyy-mm-dd hh:mm:ss 通过配套使用ExcelUtil中 getCellValue(Cell cell)获取单元格的类型 经过判定后,时间格式会进入: switch (cell.getCellType()) { case NUMERIC: // 数字 if (HSSFDateUtil.isCellDateFormatted(cell)) { double numericValue

ASP.NET 导入EXCEl文档

鉴于教务一般都是手动输入学生信息,在未了解本校数据库的客观情况之下,我们准备设计一个导入excel文档中学生信息如数据库的功能.结合网上各类大牛的综合版本出炉.. 首先具体的实现思想如下: 1.先使用FileUpload控件fuload将Excel文件上传到服务器上得某一个文件夹. 2.使用OleDb将已经上传到服务器上的Excel文件读出来,这里将Excel文件当做一个数据库来读.在联系数据库语句中,Data Source就是该文件在服务器上得物理路径 3.将第二步中读出的数据以DataTab

ASP.NETCore -----导入Excel文件

前端上传excel文件利用npoi读取数据转换成datatable(netcore坑爹啊,用的vs2017竟然不能可视化) 前端界面 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Xlsx</title> </hea

Asp.Net 导入Excel表格

前台页面: <div align="center" style="background-color:Beige"> <table style="width: 576px; border-collapse: separate; text-align: center"> <tr><td>Excel导入SQL数据库</td></tr> <tr> <td style

Asp.net 导入Excel

前台代码: <body> <form id="form1" runat="server"> <div> <asp:FileUpload ID="FileUpload" runat="server" /> <asp:Button ID="btn" runat="server" Text="Button" OnClic

Ajax asp.net 导入Excel

首先使用ajax以POST的方式提交excel文件: $("#btnUploadExcelSave").click(function () { var fileObj = document.getElementById("file").files[0]; // js 获取文件对象 var FileController = "../FileHandler.ashx?type=3"; // 接收上传文件的后台地址 // FormData 对象 var

ASP.NET——导入Excel数据

原文:http://www.cnblogs.com/xiaopin/archive/2011/03/31/2001199.html 本代码目前只支持xls文件,不支持xlsx文件. protected void btnImport_Click(object sender, EventArgs e)    {        if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件        {            Resp

C#导出Excel时间格式问题

Range range = worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[RowCount + 1, ColCount]);range.NumberFormat = @"yyyy-mm-dd"; //日期格式

时间与字串的转换,date/string

package com.neweb.botCashier.util; import java.math.BigDecimal;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; import org.apache.log4j.Logger; import com.neweb.botCashier.base.exception.A