views:

482

answers:

1

Hello,

My boss asked me to export the corp's Mantis bugs database to Excel, but he can't give me access to the SQL Server, and the process has to be automated.

The ONLY thing I can use is Excel (no ODBC, no manual export).

So I managed to do this :

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 the code) The line before, the ResponseText showed "2200 bugs", so everything was fine until the last query (csv_export.php). The script, when called via a browser, shows exactly the same as the page which called it (if the page showed 2 bugs, the CSV will contain 2 bugs). With my 2200 bugs shown in IE / Firefox, the CSV brings me 2200 bugs. But in Excel, even if the ResponseText shows 2200 bugs, the CSV brings me 624 bugs... As if I hadn't called the "Advanced Filter" page :(

I hope someone can understand and help me ;)

Thanks in advance,

David

A: 

Perhaps it would be easier for you to use the SOAP API? The entry point is at http://server/mantis/api/soap/mantisconnect.php .

Robert Munteanu
I didn't see that feature, shame on me. Thank you, that's really helpful !
Morveus