Problème de modification du type d'une colonne d'un fichier source Excel
Résolu
developpeir2019
Messages postés
8
Statut
Membre
-
developpeir2019 Messages postés 8 Statut Membre -
developpeir2019 Messages postés 8 Statut Membre -
Bonjour,
Je travaille avec un fichier excel de 30 000 enregistrements que je dois intégrer avec SSIS. Ce fichier contient des colonnes de type alphanumérique.
Pour éviter que ces colonnes ne soient entrées avec la valeur NULL, j'ai crée la tâche script qui modifie le type des colonnes depuis la source Excel de "Standard" à "Texte"
Le problème est que cette solution ne marche pas avec toutes les colonnes; il y a des colonnes dont le type est modifié, d'autres NON!!! et j'ignore les causes!!
SVP , au secours, je galère depuis une semaine!
Je travaille avec un fichier excel de 30 000 enregistrements que je dois intégrer avec SSIS. Ce fichier contient des colonnes de type alphanumérique.
Pour éviter que ces colonnes ne soient entrées avec la valeur NULL, j'ai crée la tâche script qui modifie le type des colonnes depuis la source Excel de "Standard" à "Texte"
c_colonne = m_XlWrkSheet.Cells.Find("colonnealphanum", LookIn:=Excel.XlFindLookIn.xlValues)
If Not c_colonne Is Nothing Then
m_XlWrkSheet.Columns(c_colonne.Column).NumberFormat = "@"
End If
Le problème est que cette solution ne marche pas avec toutes les colonnes; il y a des colonnes dont le type est modifié, d'autres NON!!! et j'ignore les causes!!
SVP , au secours, je galère depuis une semaine!
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, il me semble que ton code ne traite intentionnellement qu'une seule colonne.-
-
-
Voici le code du script:
#Region "Help: Introduction to the script task"
'The Script Task allows you to perform virtually any operation that can be accomplished in
'a .Net application within the context of an Integration Services control flow.
'Expand the other regions which have "Help" prefixes for examples of specific ways to use
'Integration Services features within this script task.
#End Region
#Region "Imports"
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.Office.Interop
#End Region
'ScriptMain is the entry point class of the script. Do not change the name, attributes,
'or parent of this class.
<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute()> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
Public Sub Main()
Dim m_XlApp As New Excel.Application
Dim m_xlWrkbs As Excel.Workbooks = m_XlApp.Workbooks
Dim m_xlWrkb As Excel.Workbook
m_xlWrkb = m_xlWrkbs.Open(Convert.ToString(Dts.Variables("User::ExcelPath").Value))
Dim m_XlWrkSheet As Excel.Worksheet = m_xlWrkb.Worksheets(1)
Dim c_bureau As Excel.Range
Dim c_situation As Excel.Range
With m_XlWrkSheet
c_bureau = m_XlWrkSheet.Cells.Find("bureau", LookIn:=Excel.XlFindLookIn.xlValues)
c_situation = m_XlWrkSheet.Cells.Find("situation", LookIn:=Excel.XlFindLookIn.xlValues)
If Not c_bureau Is Nothing Then
m_XlWrkSheet.Columns(c_bureau.Column).NumberFormat = "@"
MsgBox("hello1")
m_xlWrkb.Save()
End If
If Not c_situation Is Nothing Then
m_XlWrkSheet.Columns(c_situation.Column).NumberFormat = "@"
MsgBox("hello2")
m_xlWrkb.Save()
End If
m_xlWrkb.Close(SaveChanges:=True)
End With
Dts.TaskResult = ScriptResults.Success
End Sub
#Region "ScriptResults declaration"
'This enum provides a convenient shorthand within the scope of this class for setting the
'result of the script.
'This code was generated automatically.
Enum ScriptResults
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
End Enum
#End Region
End Class
Ça marche pour bureau et pas pour situation.D'autant que les deux messages "hello1" et "hello2" s'affichent. -
-
-