Question

Mon patron m'a demandé d'exporter Mantis base de données de bugs du corp à Excel, mais il ne peut pas me donner accès au serveur SQL, et le processus doit être automatisé.

La seule chose que je peux utiliser est Excel (pas ODBC, aucune exportation manuelle).

Je réussi à faire ceci:

Dim webClient As Object
Dim i As Long, vFF As Long, oResp() As Byte
Dim vLocalFile As String
Dim username As String, password As String

username = "blahblah"
password = "blahblah"

Set webClient = CreateObject("WinHttp.WinHttpRequest.5.1")

// Opening the connection to the application with a POST, containing user, password, and "permanent login" checked

webClient.Open "POST", "http://10.202.157.40/mantisbt-1.1.6/login.php", False
webClient.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
webClient.send ("username=" & username & "&password=" & password & "&perm_login=on")

// Now I set the "project" to "All Projects" (as I want the view to display our 2200 bugs)

webClient.Open "POST", "http://10.202.157.40/mantisbt-1.1.6/set_project.php", False
webClient.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
webClient.send ("project_id=0")

// The problem is, the last query displays 624 bugs instead of 2200, but I noticed when I click on "Advanced Filters" it successfully show the 2200 bugs (tested under a web browser AND Excel : the ResponseText shows them)

webClient.Open "GET", "http://10.202.157.40/mantisbt-1.1.6/view_all_set.php?type=6&view_type=advanced", False
webClient.send

// And NOW I can download the CSV file... (and that's where something is wrong *)

webClient.Open "GET", "http://10.202.157.40/mantisbt-1.1.6/csv_export.php", False
webClient.send

oResp = webClient.responseBody

// Creating a file and then filling it...
vFF = FreeFile
vLocalFile = "_mantis_export.csv"
If Dir(vLocalFile) <> "" Then Kill vLocalFile
Open vLocalFile For Binary As #vFF
Put #vFF, , oResp
Close #vFF

// Freeing memory
Set webClient = Nothing

(*: cf le code) La ligne avant, l'ResponseText a montré "2200 bugs", donc tout allait bien jusqu'à ce que la dernière requête (csv_export.php). Le script, lorsqu'il est appelé par l'intermédiaire d'un navigateur, montre exactement la même que la page qui l'a appelé (si la page a montré 2 bugs, le CSV contiendra 2 bugs). Avec mes 2200 bogues présentés dans IE / Firefox, le CSV me apporte 2200 bugs. Mais dans Excel, même si le ResponseText montre 2200 bogues, le CSV me apporte 624 insectes ... Comme si je ne l'avais pas appelé le « Filtre avancé » page: (

J'espère que quelqu'un peut me comprendre et me aider;)

Merci à l'avance,

David

Était-ce utile?

La solution

Peut-être qu'il serait plus facile pour vous d'utiliser l'API SOAP? Le point d'entrée est à http: //server/mantis/api/soap/mantisconnect.php .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top