C50108
  • 2019/0801/轉職成功路途開始
  • 自學心得與此網站使用方式
  • 行事曆&課程大綱
  • 2019/0224/自我檢視
  • 雜記
    • 2019/0103/雜記
    • 2019/0410/作品集建構
    • 2019/0429/職訓局書單
    • 2019/0317/自我檢視
    • 2019/0316/陪玄松去高車討論&環境圖流程圖大神們line討論
    • 2019/0305/Gitbook使用方法
  • 2018/10XX/轉職心路歷程
  • 職訓局里程碑
    • 201901
      • 2019/0103/行動商務系統設計與開發,職訓局報到
      • 2019/0104/正式開課日&行動商務課程簡介
      • 2019/0108/資料庫理論/Access&WEB開發簡介
      • 2019/0109/資料庫資料型態屬性&HTMLtag
      • 2019/0110/計概基礎概念
      • 2019/0111/HTML表格table&form表單_post/get&iframe
      • 2019/0114/計&網概概念&網路層概念
      • 2019/0115/資料庫Access運算值&CSS簡介&在職班補充
      • 2019/0116/Access比較/邏輯運算&CSS_在職班補充+選擇器+Box model
      • 2019/0117/資訊系統架構&網路層
      • 2019/0118/資料庫正規化
      • 2019/0121/計概IT分工&資料庫正規化
      • 2019/0122/網路層&CSS父子容器切版
      • 2019/0123/Access資料庫關聯&CSS position&偵錯
      • 2019/0124/C#宣告、指定運算子
      • 2019/0125/VM虛擬機_基礎介紹
      • 2019/0128/VM虛擬機架設_虛擬網卡設定&伺服器權限設置
      • 2019/0129/Wireshark查詢網路層&資料庫物件導向
      • 2019/0130/ERmod雞爪圖&C#if、for時間複雜度
      • 2019/0131/C#流程控制&變數型別
    • 201902
      • 2019/0201/系統分析與設計_資料庫ERmod&c#Homework
      • 2019/0211/ASP.NET_Webforms&物件命名空間
      • 2019/0212/定址&網路遮罩
      • 2019/0213/SQLSeverM.S.介紹&AspWebforms表單控制項
      • 2019/0214/網概乙太網路&網路安全
      • 2019/0215/Pre Javascript 基礎 & 在職班補充
      • 2019/0218/TSQL基本指令&ASP.net左右置換表格/驗證傳值
      • 2019/0219/Javascript終極密碼&musicplay&asp.net驗證器
      • 2019/0220/SS基本語法&網概line機器人
      • 2019/0221/前端Javascript musicplay、內聚力耦合率
      • 2019/0222/前端Javascript musicplay、內聚力耦合率&伺服器權限
      • 2019/0223/SqlServerHomework&第一次專案報告
      • 2019/0225/SS合併查詢&ASP.NET驗證器
      • 2019/0226/伺服器ntfs安全性權限/共用權限
      • 2019/0227/Javascript_music_play_end&ASP.net串聯SQL(datasource就是拿來串SQLServer的)
    • 201903
      • 2019/0304/SS集合運算/子查詢/exists&asp.net GridView 事件 OnRowDataBound
      • 2019/0305/SS查詢式end&ASP.NET_Gridview_自訂樣式分頁
      • 2019/0306/Javascript musicplay_really_end
      • 2019/0307/前端HTML5鑲嵌字型&伺服器網域概念
      • 2019/0308/Android Studio_基礎概念&開發環境建置
      • 2019/0311/胡中興 工業4.0講習
      • 2019/0312/安卓系統_開發基礎介紹
      • 2019/0313/安卓工作室_基礎/布局內元件
      • 2019/0314/Asp.net鏈結資料庫-查詢
      • 2019/0315/SQS DML&第二次專案報告
      • 2019/0318/SQL DDL & 伺服器 自學基礎
      • 2019/0319/Android Studio_布局內元件&佈局規劃元件
      • 2019/0320/SQL檢視表&tsql基礎&Asp.net_Gridview
      • 2019/0321/TSQL&TDM&ASP.NET_Datalist
      • 2019/0322/DOM&JQ基礎&系統分析設計PPT&在職班補充
      • 2019/0325/TMD&Asp.net上傳圖片/產生QRCode
      • 2019/0326/SQLServer_預存程序+函數&Asp.net_Webforms半自動鏈結資料庫與自動化更新
      • 2019/0327/安卓工作室_佈局規劃元件
      • 2019/0328/jQuery選擇器應用&Ajax導讀+應用&asp.net串sserver_註冊帳號功能
      • 2019/0329/ADDS伺服器架設&第三次專題報告
    • 201904
      • 2019/0401/SQL觸發程序&Asp.net自動寄信&認證信
      • 2019/0402/前端作業四-jQ應用轉換樣式&ASP.NET_FormView控制項-會員資料維護實例
      • 2019/0403/JQ事件動畫&股市&Usecase
      • 2019/0408/安卓工作室_元件/布局基本end
      • 2019/0409/安卓工作室-物件導向事件驅動實作+Homework1&2
      • 2019/0410/上午小組討論-作品集自習&Visual studio webform+MVC範本
      • 2019/0411/安卓工作室-UI觸發委派函式與控制物件
      • 2019/0412/JQ動畫實做(寶可夢遊戲開場)&第四次專題報告
      • 2019/0415/前端JQ-Ajax+JSON&後端ADO建置、主板頁面概念控制項、Bootstrap演示
      • 2019/0416/安卓工作室UI控件案例結束、IDE Eclipse_Java物件導向基礎
      • 2019/0417/伺服器網域ADDNS&416LINE討論
      • 2019/0418/SQL指標、索引&Use cace
      • 2019/0419/主頁、Webform ADO.NET Entity Fromwork 增刪修實作&第五次專題報告
      • 2019/0423/Java基礎(型別/溢位/自動強制型別轉換/鑄造物件/串流/)&I/O物件用法(底層/較不底層)
      • 2019/0424/Bootstrap_RWD基礎/應用&Asp.Net_MVC實作增刪修(修待補)
      • 2019/0425/伺服器IIS安裝&資料匯入與管理
      • 2019/0426/Asp.Net_MVC增刪修實作(補修)&bootstrap – gridsystem– 網格系統&第六次專題報告&全國技能競賽網頁設計
      • 2019/0429/物件導向技術原理方法實作
      • 2019/0430/資料庫設計應用效能調教_SQL all end&ASP.NET_MVC_Controller單元_純C無V無M操作/簡單複雜繫結
    • 201905
      • 2019/0501/內部網站辨識&外部DNS域名/IP+自架DNS伺服器理解
      • 2019/0502/Java語言基礎、物件導向基礎
      • 2019/0503/Asp.net泛型處理常式驗證圖片應用&第七次專題報告Usecase
      • 2017/0506/Bs_FlexBox&Asp.Net_MVC_View+Razor@+Viewbag+helper
      • 2019/0507/Java 物件導向_類別+函式觀念&階段性作業三
      • 2019/0508/Asp.Net_MVC_Model_ADO.NET+Entityframework+LoginMember實作+MVC觀念
      • 2019/0509/Java物件導向(函式)_儲存型態+回傳值+多載+自制+例外處理+this參照+存取+複合
      • 20919/0510/第八次專題報告=功能DEMO
      • 2019/0514/Java_靜態類別+繼承特性
      • 2019/0515/RWD Utility+Card&MVC ViewModel+CRUD(RD)
      • 2019/0516/BS form&驗證+JQ驗證 & MVC_CRUD(CU)
      • 2019/0517/ASP.NET Webform介紹Master page 主頁 & Session 簡介 & 登入login驗證 & 隱碼攻擊injection & 工具箱程式碼片段使用
      • 2019/0520/繼承&存取權特性+java作業四+字符串格式化+多形+抽象類別
      • 2019/0521/抽象類別+介面
      • 2019/0522/Bootstrap Components 元件介紹 + MVC API 概念&實作
      • 2019/0523/IIS IP限制&ASP.NET部屬
      • 2019/0524/WebApi異質程式連線方式&第九次專題報告_循序圖
      • 2019/0528/Bootstrap Components 元件介紹 + MVC 登入驗證 + 商品加入購物車 實作
      • 2019/0529/ASP.NET_MVC購物車訂單功能完成+BootstrapComponents元件介紹
      • 2019/0530/原本是伺服器的課,但拿來做專題。
      • 2019/0531/ASP.NET_WebformAllView物件功能清單&ListView實作&第十次專案報告(完整循序圖)
    • 201906
      • 2019/0603/Bootstrap Components RWD End + ASP.NET_MVC Part2 PhotoSharing CodeFirst & Model 驗證
      • 2019/0604/ASP.NET_MVC Part2 PhotoSharing Controller & Filter & ADO.NET & View@RAZOR Helper
      • 2019/0605/Java介面實作&結束+安卓工作室(整合Layout與Java)Intent意圖&Bundle包裹
      • 2019/0606/第十一次專案報告功能demo+SingnaIR+伺服器作業+端午歌唱比賽
      • 2019/0609/黃大神傳授Visual_Studio&除錯技巧
      • 2019/0610/番外篇 Web Socket 即時連線& 就業前準備與技巧
      • 2019/0611/安卓工作室_(意圖+隱含意圖)資料傳遞+Android生命週期+硬體裝置與應用
      • 2019/0612/WebSockets Notification + MVC Part2 PhotoSharing PartialView & ADO.NET & EntitySQL & VMd
      • 2019/0613/MVC Part2 PhotoSharing ViewModel & ErrorHandle
      • 2019/0614/第十二次專案報告 功能Demo
      • 2019/0618/MVC Part2 PhotoSharing Route & Sitemap & _LayOut & AJAX
      • 2019/0618/RWD在職班_(Javascript_object-oriented programming)
      • 2019/0619/安卓工作室_(硬體裝置與應用)相機操作&GPS+階段性作業6+延伸 ( APP End )
      • 2019/0620/MVC補充C#MS SQL匯入CSV+上傳CSV存入MS SQL
      • 2019/0621/第十三次專案報告 功能Demo
    • 2019/0701/最終專案報告
    • 2019/0702/結訓與家人遊台東預計0708開始找工作自學筆記應該會等工作穩定後繼續開始
  • 自學里程碑
    • 201901
      • 2019/0107/DR
      • 2019/0108/UW
      • 2019/0103/Git
      • 2019/0103/CS
      • 2019/0115/Vscode
      • 2019/0116/JSON&AJAX
      • 2019/0122/卡內基
      • 2019/0126/MBTI
      • 2019/0131/PDP 外在 內在
    • 201902
      • 2019/0217/huli_half Developer
      • 2019/0219/SEO
      • 2019/0219/雪球速讀法
    • 201903
      • 2019/0304/asp、php、jsp、asp.net、net. Framework、asp.net core
      • 2019/0329/網站架站初嘗試
    • 201904
      • 2019/0415/Datatype-Explanation
      • 2019/0416/ASP.NET_Webform&Core&MVC(MVVM/MVP)
    • 201905
      • 2019/0613/開發職訓局共同專案時遇到的問題與解法
      • 2019/0514/ASP.NET SignalR
      • 2019/0514/JS擴展-JQ、React、Vue、Angular...
      • 2019/0514/Sass&Scss
      • 2019/0514/MVC結合Webform
      • 2019/0515/ASP.NET MVC_TempData/ViewData/ViewBag
      • 2019/0522/[自學筆記]海綿體啟蒙??
Powered by GitBook
On this page
  • #MVC收尾 CSV 匯入匯出
  • ##匯出sql資料寫入 excel
  • ##上傳excel檔案然後匯入資料庫
  • ##那如何寫回資料庫呢?

Was this helpful?

  1. 職訓局里程碑
  2. 201906

2019/0620/MVC補充C#MS SQL匯入CSV+上傳CSV存入MS SQL

#MVC收尾 CSV 匯入匯出

CSV 讀檔 到資料庫或畫面

批次新增

讀進去 讀出來

單純的 CSV 連插件都不用,讀檔方式都是,逗點相隔

BIG5 不會有字碼問題

UNCODE 有字碼問題

##匯出sql資料寫入 excel

首先SQL Server 連接

設計模式去用精靈設定Sqldatasourse 或自己寫

接著去加入控制器DefaultController.cs

其實很簡單 就是讀到一個dataset 檔案 io 物件 讀寫 stream reader writer

用 ADO.NET 比較簡單

Using

System.Data.SqlClient

System.Configuration;

System.IO

有架構的寫法

SqlConnection

ConfigurationManager

SqlDataAdapter

DataSet

利用這幾個物件

SqlDataAdapter 資料查詢完後 Fill 填進 dataset

利用 DataTable 建立資料表物件

利用 streamWriter 物件寫入

建立一個資料夾放輸出的檔案 fileoutput

實體與邏輯路徑轉換 server.mappath

Append 覆蓋或不覆蓋 true false

Encoding.default 抓預設字符編碼

宣告一個字串預備使用

不知道有幾筆資料

所以用 foreach()

Datacolumn 讀欄位

Column 欄位

Datarow 一筆資料就是一個 datarow

Row 資料

讀完之後要寫入datatable 所以

矩陣 欄位 與 資料 所以要用 雙迴圈

Trim() 去掉頭尾空白

加 \n 然後要把資料寫進去 打開 write() 物件

用完要關掉 dispose

接著 新增 view 執行測試 執行完後 檢視資料夾 確實有一個 csv 檔案叫 output

邏輯很簡單其實只是複雜

##上傳excel檔案然後匯入資料庫

批次新增資料時使用,且不是由開發維護人員放入,

而是開發一個介面由員工來用

如果要cobe 學生資料表 關聯都必須要一樣

Select * into 學生2 from 學生 ( 這個必須要沒有學生2這個表

如我要從一個存在的資料表塞資料

insert into ( 不要寫value 要用 select的

Cobe後的只差在沒指定pk

然後把資料刪除 接著要做

上傳get post action

檔案當成參數 傳進來 所以用 httppostedfilebase 物件型態

做判斷 不能為空值 不然報錯

Ie chrome path 抓值方式不同 ( 附檔名差異

所以要再多一個 if 判斷 且報錯或 修正 ie 問題

接著一樣 操作 sqldatadapter

然後fill丟資料到 dataset

接著利用 streamreader 物件去編碼讀檔

利用方法Readline方法

第一行是欄位所以要記得避過

接著做一個 string陣列預備使用

接著用迴圈把 欄位 值 讀出來 因為每筆只有一行 所以用endstream控制次數

用逗點為依據split方法分割字串

接著把切個出來的字串 餵入 datarow

因為不知道幾欄所以用 for

最尾端不能有逗點 不然會多一筆空字串值 所以 這邊環圈的最大值要注意

幾筆資料 幾欄

然後加到 datatable 裡面去

##那如何寫回資料庫呢?

利用 datacommandbuilder 物件

讀dataset update 即可 ( 如果忘記就在去查察都有講過

接著新增 view

必須要搞定上傳介面 且 一定要放在form 標籤內 因為不是純 get url 傳值

因為要上傳資料 enctype 藥用 multipart/form-data

Action 要打url.action(@upload) 才知道訪問目標

Dataset 可以用放大鏡看

偵錯 視覺化顯示 !? ( 要回放影片檢視 不小心走神了

日期沒做隱含轉換必須要再做處理

所以我們要先抓最後一串進行轉形態

但這樣就會比較不活

所以讀檔相對麻煩

如果資料庫是 null 的話 讀到excell就會是空字串

所以要再多一個判斷不能等於空””

以上 inport 與 outport

###Controllers/DefaultController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;


namespace File_Import_Outport.Controllers
{
    public class DefaultController : Controller
    {
        SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        SqlDataAdapter da;
        DataSet ds;

        // GET: Default
        public ActionResult Index()
        {
            da = new SqlDataAdapter("select * from 學生",Conn);
            ds = new DataSet();
            da.Fill(ds);
            DataTable dt = new DataTable();
            dt = ds.Tables[0];

            StreamWriter wr = new StreamWriter(Server.MapPath("~\\FileOutput\\output.csv"),false,System.Text.Encoding.Default);
            string data = "";
            foreach (DataColumn colume in dt.Columns)
            {
                data += colume.ColumnName + ",";
            }
            data += "\n";
            wr.Write(data);
            data = "";

            foreach (DataRow row in dt.Rows)
            {
                foreach (DataColumn colume in dt.Columns)
                {
                    data += row[colume].ToString().Trim() + ",";
                }
                data += "\n";
                wr.Write(data);
                data = "";

            }

            wr.Dispose();
            wr.Close();

            return View();
        }


        public ActionResult UpLoad()
        {
            return View();
        }
        [HttpPost]
        public ActionResult UpLoad(HttpPostedFileBase upfile)
        {
            if(upfile!=null)
            {
                if(Path.GetExtension(upfile.FileName)==".csv")
                {
                    da = new SqlDataAdapter("select * from 學生2", Conn);
                    ds = new DataSet();
                    da.Fill(ds);

                    StreamReader sr = new StreamReader(upfile.InputStream,System.Text.Encoding.Default);

                    sr.ReadLine();
                    string data = "";
                    string[] arrData;
                    while (!sr.EndOfStream)
                    {
                        data=sr.ReadLine();
                        arrData = data.Split(',');
                        DataRow dr = ds.Tables[0].NewRow();
                        int k = ds.Tables[0].Columns.Count;
                        for (int i=0;i<k;i++)
                        {
                            if(i==(k-1))
                            {
                                if(arrData[i]!="")
                                 dr[ds.Tables[0].Columns[i]]= Convert.ToDateTime(arrData[i]);

                            }
                            else
                                dr[ds.Tables[0].Columns[i]] = arrData[i];

                        }
                        ds.Tables[0].Rows.Add(dr);
                    }

                    SqlCommandBuilder sc = new SqlCommandBuilder(da);
                    da.Update(ds);

                   
                }
            }



            return View();
        }

    }
}

###Views/Default/Index.cshtml

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

###Views/Default/UpLoad.cshtml

@{
    ViewBag.Title = "UpLoad";
}

<h2>UpLoad</h2>

<form action="@Url.Action("UpLoad")" method="post" enctype="multipart/form-data">
    <input id="File1" name="upfile" type="file" />
    <input id="Submit1" type="submit" value="submit" />
</form>

Previous2019/0619/安卓工作室_(硬體裝置與應用)相機操作&GPS+階段性作業6+延伸 ( APP End )Next2019/0621/第十三次專案報告 功能Demo

Last updated 5 years ago

Was this helpful?

[VS.NET]偵錯使用 DataSet Visualizers 視覺化檢視來觀察資料及修改資料 | Dotjum@點部落 - 點部落Dotjum@點部落
Logo