怎樣把Excel檔中的工作表內容存入數據庫

 頁面代碼﹕

< form id = " Form1 "  method = " post "  runat = " server " >
   
< TABLE id = " Table1 "  cellSpacing = " 0 "  cellPadding = " 0 "  width = " 770 "  border = " 0 " >
      
< TR >
         
< TD align = " center " >< asp:label id = " Label1 "  runat = " server "  CssClass = " text_16bold "  EnableViewState = " False " > 考勤

資料上傳
</ asp:label ></ TD >
      
</ TR >
      
< TR >
              
< TD >< asp:label id = " Label2 "  runat = " server " > 請選擇要上傳的文件 </ asp:label ></ TD >
      
</ TR >
      
< TR >
              
< TD >< input id = " myFile "  type = " file "  name = " myFile "  runat = " server " ></ TD >
      
</ TR >
       
< TR >
              
< TD >< input id = " btnUpload "  type = " button "  value = " 上傳 "  name = " btnUpload "  runat = " server " ></ TD >
        
</ TR >
        
< tr >
              
< td >< asp:label id = " lblMSG "  runat = " server "  EnableViewState = " False "  ForeColor = " Red " ></ asp:label ></ td >
        
</ tr >
        
</ TABLE >
</ form >

 

  后台關鍵代碼﹕

///把excel檔數據放入DataTable

public  DataTable GetXLSData( string  filename, string  SheetName)
  
{
   
string mystring="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +filename + ";Extended Properties='Excel  8.0;;HDR=YES;IMEX=1';"
   OleDbConnection cnnxls
=new OleDbConnection(mystring);
   OleDbDataAdapter myDa
=new OleDbDataAdapter("select * from ["+SheetName+"$]",cnnxls);
   DataSet myDs
=new DataSet();
   myDa.Fill(myDs,
"["+SheetName+"$]");
   
return myDs.Tables[0];
  }


///上傳按鈕事件﹐把放入到DataTable的數據存入到數據庫

public   void  btnUpload_ServerClick( object  sender, System.EventArgs e)
  
{   
   
int  CorrectNUM = 0;
   
   
if(this.myFile.PostedFile!=null)
   
{                 
      
string strPath=(Server.MapPath("/POS/Upload/"+DateTime.Now.ToString("yyyyMMddhhmmss")+".xls"));
      myFile.PostedFile.SaveAs(strPath);
     
try
      
{
         DataTable dt
=this.GetXLSData(strPath,"history data");
         
for(int i=0;i<dt.Rows.Count;i++)
          
{     
            
string PNL=dt.Rows[i][2].ToString();   //工號
            string DATETIME=dt.Rows[i][3].ToString();
            DATETIME
=System.Convert.ToDateTime(DATETIME).ToString("yyyyMMdd HHmmss");
     
            
string YMADY=DATETIME.Substring(0,8).ToString();//刷卡日期
            string CAR_TIME=DATETIME.Substring(9,4).ToString();//刷卡時間
             
//數據層調用到后端存儲過程

            
string msg=new EmpWorkTimeBL().UploadCardRecord(PNL,YMADY,CAR_TIME);

           
if(msg=="true")
             
{
                CorrectNUM
++;
                
this.lblMSG.Text = "共有"+ CorrectNUM.ToString()+"資料上傳成功";
                
this.Bind_dgUpload();
            }

         
else
           
{
               JSUtil.Alert(msg);
               
return;
          }
  
       }
 
    }

     
catch
      
{
          
this.lblMSG.Text="上傳的文件有誤";
          
return;
      }

    
    }

   
  }

在Go语言中将Excel表格数据存储到数据库中,通常需要三个步骤:首先读取Excel文件,然后解析数据,最后将数据插入到数据库中。这里我们可以使用一些库来完成这个过程: 1. **读取Excel文件**:`github.com/tealeg/xlsx` 是一个流行的选择,用于读取Excel文件。你可以使用它的`NewFileFromReader`函数从文件或字节流创建一个`*xlsx.File`对象。 ```go file, err := xlsx.NewFileFromReader(reader) if err != nil { // 处理错误 } ``` 2. **解析数据**:通过遍历工作表和单元格,提取你需要的数据。比如,可以获取每个sheet中的行和列数据,将其转换成适合数据库的结构体。 ```go type ExcelRow struct { Column1 string Column2 int } for _, sheet := range file.Sheets() { for _, row := range sheet.Rows { newRow := ExcelRow{} for _, cell := range row.Cells { newRow[cell.R] = cell.Value } // 新建数据库连接... dbInsert(newRow) } } ``` 3. **将数据插入数据库**:假设你已经有了数据库驱动,如 `database/sql` 或 ORM 框架(例如 `gorm`),可以将解析后的数据插入到对应的表中。 ```go func dbInsert(row ExcelRow) { db, err := sql.Open("your_database_driver", "your_connection_string") if err != nil { // 处理错误 } defer db.Close() // 使用ORM的方式 var queryStr = "INSERT INTO your_table (column1, column2) VALUES (?, ?)" _, err = db.Exec(queryStr, row.Column1, row.Column2) if err != nil { // 处理错误 } } ``` 记得处理可能出现的各种错误,并根据实际需求调整数据类型映射。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值