2016-10-20 9 views
0

私はディレクトリをスキャンし、各ExcelファイルをループしてMSSQLにロードするSSISプロジェクトに取り組んでいます。現在、の問題は2.966171e+006と表示されています。私が持っているものは次のとおりです。SSIS Scientific Notation望ましい

1)Excel接続文字列がIMEX = 1を渡しています。 (インポートエクスポートモード) Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\UNC\PATH\TO\Excel.xls;Extended Properties="EXCEL 8.0;HDR=NO;IMEX=1";

2)Excel Sourceは、このフィールドのデータ型を確認した長さのDT_WSTRである255

私が試してみました物事:

1)にExcelでデータ型を変更しますテキスト

2)明示的に文字列を10進数に変換して文字列に戻すスクリプトコンポーネントを作成する。 (ひどいアプローチ)

3)誘導された列コンポーネントでのキャスティング。

Source and SSIS

編集:私はいくつかの他の行は、英数字の値が含まれ、DT_WSTRタイプこの列を保持する必要があります。

+0

とは異なるデータ型のセルに格納されているときに科学記号が表示されるため、コンポーネントのアドバンストエディタで列を数値に変更しようとしましたか? – Jayvee

+0

申し訳ありませんが、列の一部の行が英数字であるため、文字列である必要があります。 – txDMTN

答えて

0

Excelファイルをループさせるには、各ループのコントロールを使用 に、変数(例:@ [ユーザー:: strExcelFile])にファイルパスをマッピングあなたは2つのデータフロータスクを使用する必要がありますforeachのコンテナ内

; 最初のものは宛先としてExcelソースとスクリプトコンポーネントが含まれているExcelファイルを使用すると、以下の手順に従わなければなりません同じ構造を持っている場合、第二DataFlowTaskはあなたのタスク

です:

  1. は、Excelを開きますエクセルソース内のファイルと第二データフロータスクでExcel接続マネージャで
  2. に番号をentirecolumnの種類を変更するには、このファイルを選択します
  3. は最初のダで
  4. trueに遅延検証プロパティを設定しますスクリプトコンポーネント プロパティ(スクリプトタブ)INT taflowタスクが読み のみ変数に変数「strExcelFile」を入れて、スクリプトで次の手順を実行する必要があります。

はまずMicrosoft.Office.Interopを追加します。 、

Imports Microsoft.Office.Interop.Excel 

Dim strExcelFiles As String = String.Empty 

Public Overrides Sub PreExecute() 
    MyBase.PreExecute() 

    strExcelFiles = Variables.strExcelFile 

End Sub 

第3の主にサブExcelを作成する書き込み:参考としてExcel.dll

第二は、以下のコードを使用して変数からExcelFileパスを読み取ります。アプリケーションが偽 オープンExcelFileにVisibleプロパティを設定し、数値にEntireColumnTypeを変更し、Excelファイルを保存し、次のコードを使用してアプリケーションを終了します:

Dim ColIdx As Integer = 0 'Number Column index 

    Dim appExcel As New Excel.Application 
    appExcel.Visible = False 

    Dim wrkbExcel As New Excel.Workbook 
    wrkbExcel = appExcel.Workbooks.Open(strExcelFile) 

    Dim wrkshExcel As Excel.Worksheet = wrkbExcel.Worksheets(0) 


    wrkshExcel.Cells(1, ColIdx).EntireColumn.NumberFormat = "0" 
'this will change the EntireColumn Type to Number and eliminate scientific character E+ 



    wrkbExcel.Close(True) 

    appExcel.Quit() 

ブリーフ、すべてのExcelファイルからデータをインポートする前に編集する必要があります数値が

関連する問題