国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET(C#) 讀取EXCEL另加解決日期問題的方法分享

2024-07-10 12:44:26
字體:
來源:轉載
供稿:網友

使用OLEDB可以對excel文件進行讀取,我們只要把該excel文件作為數據源即可。

一 在D盤創建excel文件test.xls:

二 將工作表Sheet1的內容讀取到DataSet
代碼如下:
  string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
      "Extended Properties='Excel 8.0'";
  DataSet ds = new DataSet();
  OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
  oada.Fill(ds);

讀取的DataSet為:

從圖中可以看出excel文件中的第一行變成了DataSet中的列名,這正是系統的默認設置。

三 如果想把第一行也作為數據行,那我們可以給連接字符串添加一個HDR=No屬性如:
代碼如下:
  string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
      "Extended Properties='Excel 8.0;HDR=No'";
  DataSet ds = new DataSet();
  OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
  oada.Fill(ds);

  結果也許會讓你有點想不到:

第一行的第一列和第三列都變成空的了,這是因為系統把第一列識別成了數字,把第三列識別成了日期,

而第一行的數據不符合格式的要求,所以就變成空的了。

四 我們還可以把所有列都做為字符串來讀取,只要添加屬性IMEX=1即可
代碼如下:
  string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+
      "Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
  DataSet ds = new DataSet();
  OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
  oada.Fill(ds);

  結果又會如何呢?

是不是再次出乎你的意料,第三行的日期怎么變成數字了,其實excel在轉換格式的時候就自動把日期變成數字了,

那這個數字是怎么來的呢 ? 如果你把日期改成1900年1月1日,那么你可以看到他的轉換結果是1,以此類推,39902是哪一天就明白了吧。

這里解決辦法:

方法一:
代碼如下:
  public static string getDateStr(string strValue)
      {
          int i = Convert.ToInt32(strValue);
          DateTime d1 = Convert.ToDateTime("1900-1-1");
          DateTime d2 = d1.AddDays(i - 2);
          string strTemp = d2.ToString("d");

          return strTemp;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿拉善右旗| 剑河县| 双桥区| 乐至县| 泰顺县| 花莲市| 若羌县| 卫辉市| 青阳县| 瓮安县| 同德县| 绵竹市| 新乐市| 随州市| 涞水县| 南平市| 天门市| 梁山县| 威远县| 栖霞市| 龙川县| 济源市| 分宜县| 太仓市| 天气| 德钦县| 加查县| 汉川市| 通渭县| 威远县| 晋城| 东宁县| 云安县| 永川市| 芜湖县| 丽水市| 屯留县| 河南省| 沧州市| 湄潭县| 张家口市|