1

Excel シートを SQL Server db テーブルにインポートしています。テーブルは id | で構成されています。データ (実際には mm/dd/yyyy の日付) データをデータベース テーブルにインポートできますが、Excel シートのデータ (日付) 列を yyyy/mm/dd 形式に変換してからインポートする必要があります。 SQLサーバー。Excelシートをインポートするための私のコードは次のとおりです。

      DataTable dt7 = new DataTable();
      dt7.Load(dr);

                // Bulk Copy to SQL Server
     using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
     {                       


     bulkCopy.DestinationTableName = "ExcelTable";


     bulkCopy.WriteToServer(dt7);


     }
     dr.Close();

mm/dd/yyyy を yyyy/mm/dd に変換するコードを見つけました。

    string a = "12/20/2012";
    DateTime dt = Convert.ToDateTime(a);
    string st = dt.ToString("yyyy/MM/dd");
    Label1.Text = a;
    Label2.Text = st;

しかし、コードに実装する方法がわかりません。私は完全な初心者なので、コードで説明する必要があるかもしれません:(

4

2 に答える 2

0

これを試して:

Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports System.Web.Configuration

//Declare Variables - Edit these based on your particular situation
Dim sSQLTable As String = "TempTableForExcelImport"
Dim sExcelFileName As String = "myExcelFile.xls"
Dim sWorkbook As String = "[WorkbookName$]"

//Create our connection strings
Dim sExcelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(sExcelFileName) & ";Extended Properties=""Excel 8.0;HDR=YES;"""
Dim sSqlConnectionString As String = WebConfigurationManager.ConnectionStrings("MyConnectionString").ToString


//Series of commands to bulk copy data from the excel file into our SQL table
Dim OleDbConn As OleDbConnection = New OleDbConnection(sExcelConnectionString)
Dim OleDbCmd As OleDbCommand = New OleDbCommand(("SELECT * FROM " & sWorkbook), OleDbConn)
OleDbConn.Open()
Dim dr As OleDbDataReader = OleDbCmd.ExecuteReader()


Using bulkCopy As New System.Data.SqlClient.SqlBulkCopy(con) 
bulkCopy.DestinationTableName = "tblExcel" 

//Define ColumnMappings: source(Excel) --destination(DB Table column)   
bulkCopy.ColumnMappings.Add("col1", "col1") 
bulkCopy.ColumnMappings.Add("col2", "col2") 
:
:
bulkCopy.ColumnMappings.Add("col2", ExcelRows [i]["DateColumn"].ToString("yyyy/MM/dd")) //This is for date

bulkCopy.WriteToServer(dr) 

End Using 
bulkCopy.WriteToServer(dr)
OleDbConn.Close()
于 2012-10-29T05:56:10.513 に答える
0

DataTable からすべての DataRows を取得する必要があります。Date 列を選択し、変更して元に戻します。

DataRow[]  ExcelRows;
ExcelDataTable.Rows.CopyTo(ExcelRows,0);

For(int i=0;i<ExcelRows.Length;i++)//i represents the row
{
     var oldDate=ExcelRows [i]["DateColumn"].ToString();
     var newDate=Convert.ToDateTime(oldDate);   
     ExcelRows [i]["DateColumn"] = newDate.ToString("yyyy/MM/dd");   
}  

 bulkCopy.WriteToServer(ExcelRows);
于 2012-10-29T05:40:49.360 に答える