Forcing PHPExcel file to be saved and downloaded - download

With one of my projects I have users 'export' information into Excel files using PHPExcel. When it works, it works perfectly. Other times, only some people can actually open the files.
Since I need to store the exports that are created, they are saved on the server and then the created file is downloaded using readfile(). When it doesn't work, (which is most of the time now) people get the 'wrong file format' error. The really odd thing is that since the file is saved, they can try downloading that same file again. Then it works.
Here is my final save and download code:
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$Temp_Export_File_Name.'"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//$objWriter->save('php://output');
$objWriter->save('../project_files_images/created_exports/'.$Temp_Export_File_Name);
readfile('../project_files_images/created_exports/'.$Temp_Export_File_Name);
exit;
Is there something wrong with this code that I am missing? The problem tends to show itself most for users of the latest versions of Office (Mac or Windows)
Thanks for the input.

Mark's tip was correct. For anyone else that might run into this, here is what was happening.
PHPExcel, for some reason, requires a 'Creator' and 'Last Modified By' field and I am not using them. I simply commented out the 2 lines of code within the PHPExcel code which referred to these 2 items.
It still doesn't explain why it effected the forced file and not the saved file, but the theory I am running with is this.
The saved file was created by all the header information set and saved.
The forced file somehow included the printed errors on the head of the file.

Related

SSRS: Report Exists but is not visible on Page

I am trying to upload a newly modified report to a Folder on our Report Server.
If I Upload with 'Overwrite Item if it Exists' checked, the Upload appears to execute.
But when I go to the destination page, the report does not appear there.
If I then try the Upload again - with 'Overwrite Item if it Exists' NOT checked, I get a message saying: "The folder, report, resource, model or data source /Folder_Name/Sub_Folder/Report_Name already exists."
The one thing I may have done that I have never done before is I may have first deleted the existing report from the destination folder before attempting to upload the modified replacement for it.
I need the modified report to be visible on the destination page/folder for my Users.
I'd appreciate any help I can get.
Thanks!!
Though I was not able to figure out why the modified report refused to show in the existing folder every time I uploaded it, I created a new folder and was able to upload the modified report into it and move all the other reports into the new folder as well. Everything is working as expected in the new folder. I know this is not an 'answer per se but it has solved my problem. Thanks!

Adding LESS Extension to Dreamweaver CS5.5

Work gave me a new Macbook Pro yesterday and I'm having a hard time getting Dreamweaver CS5.5 to work with my LESS files. At first, I was getting an error saying that it couldn't open the filetype, so I hit the Adobe help areas and user forums and found the solution about editing Extensions.txt and MMDocumentTypes.xml. So now I can open the files from my local files side panel, but not from File -> Open. And despite having it listed as a Style Sheet extension, code hinting and coloring isn't working. A bizarre twist is that now if I take out my edits to those files, DW still opens the LESS files without an error. Anyone have any ideas how I can get this fully operational?
Here are a couple of the articles I found in my research and followed as best I could:
http://help.adobe.com/en_US/dreamweaver/cs/extend/WS5b3ccc516d4fbf351e63e3d117f53d6108-7fda.html
http://helpx.adobe.com/dreamweaver/kb/change-add-recognized-file-extensions.html
From what I tried today, it kind of makes sense to me now. I have it working on CS5. To get started, you should show all files on your computer. Spotlight (OS X) makes things super easy to find all instances of those files. Once you find it, CMD + R will reveal the parent folder where the file resides.
The "Extensions.txt" handles whether or not DW can open the file from the modal window/program menu. This file is located in 2 places and you should edit using "text edit" or another baside editing program:
USERS/library/Application Support/Adobe/Deamweaver
CS5/en_US/Configuration/Extensions.txt
Applications/Dreamweaver/Configuration/Extensions.txt
To do that you just need to declare a new type:
As part of the "all documents" list you need to add your SCSS,LESS
extensions
As part of the "stylesheets" list you need to add your SCSS,LESS extensions
CSS,SCSS,LESS:Style Sheets
The second file you need to EDIT, is under the folder "DocumentTypes" in CS6 I believe that folder has moved to:
USERS/library/Application Support/Adobe/Deamweaver CS5/en_US/Configuration/
However, in CS5, I found this folder in Applications/Dreamweaver/Configuration/
From here if you edit "MMDocumentTypes.xml" this file it should explain how those extensions you previously defined in "Extensions.txt" should behave. (Again, use a basic text editor).
I think somewhere on line 140 or so, you'll see the following:
<documenttype id="CSS" internaltype="Text" winfileextension="css" macfileextension="css" file="Default.css" writebyteordermark="false" mimetype="text/css" >
From here add "scss,less" to the 'winfileextension' and 'macfileextension'. Because you're on a Mac, you probably want to make sure its filled out in the 'macfileextension' attribute.
The result should look like this:
<documenttype id="CSS" internaltype="Text" winfileextension="css,scss,less" macfileextension="css,scss,less" file="Default.css" writebyteordermark="false" mimetype="text/css" >
Cheers!

"open in IE 1.4" addon stopped working

Whenever I press on the open in IE icon, I get an error in the console:
Error: NS_ERROR_FILE_NOT_FOUND: Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIProcess.init]
Source File: chrome://openinie/content/openinie.js
Line: 126 (This happened ever since upgrade to 16.0 and I assume it's probably security related)
I found that js file to be inside some "openinie#wittersworld.com.xpi" file (which I cleverly renamed to zip), and saw the offending line:
var iePath = openinie.getIEPath();
// create an nsILocalFile for the executable
var file = Components.classes["#mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(iePath);
// create an nsIProcess
var process = Components.classes["#mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file); // <-line 126
is it possible to fix it and "re-compile" it zipping and renaming?
(I assume it's something with security maybe).
can I debug this using for example an alert box to display values of variables?
is it possible to fix it and "re-compile" it zipping and renaming
Yes, you can simply replace a file in the ZIP archive, most extensions aren't signed (you can remove the META-INF directory from the XPI file if this one is). In fact, for your debugging it is better to unpack openinie#wittersworld.com.xpi into a directory named openinie#wittersworld.com in the same folder and remove the original file - this way you won't need to pack/unpack on each change. You should also start Firefox with the -purgecaches command line parameter, otherwise the file you are changing might get cached.
can I debug this using for example an alert box to display values of variables?
Yes. However, I would rather recommend Components.utils.reportError() method that will log to the Error Console (press Ctrl-Shift-J to open it) without opening modal dialogs. In this particular case I would write:
Components.utils.reportError(iePath);
This seems to point to a non-existent file meaning that the getIEPath() function is faulty.
Good luck!

Firefox extension: Handle file save dialogs

Some of the webpages I visit have stubborn save file dialogs for executables. I would like to do one of the following using an extension:
Save the file by default and close the dialog box. I looked at http://kb.mozillazine.org/File_types_and_download_actions It doesn't really work for these files (the problem is described at: http://kb.mozillazine.org/File_types_and_download_actions under 'Unable to set automatic action. I verified the headers.)
I guess I can use browser.download.manager.closeWhenDone from https:// developer.mozilla.org/en/Download_Manager_preferences , if I figure out the first part :)
Suppress the download manager from showing any such dialogs altogether.
I found https:// developer.mozilla.org/en/nsIDownloadManager#addListener() and https:// developer.mozilla.org/en/Download_Manager_improvements_in_Firefox_3 that look promising. I don't really know how to extract the source URI for the transfer either. I'm curious if anyone has any existing examples for using these or if there's a better way to do this. Or if someone knows what part of Firefox's code I could poke, that would be useful too.
Thanks!
PS: Sorry,I had to break the hyper-links above with an unnecessary space after https:// - apparently I need 10 reputation to do that :)
FWIW, I managed to work around this - though my solution probably wont work for most others.
Fortunately I'm behind a proxy I control, so I just corrected the obnoxious headers (Content-Disposition and Content-Type) before they reached Firefox. These were forcing Firefox to open the File Save Dialog box despite my specified preference to 'Always save file of this type'. Furthermore, I set 'browser.download.manager.closeWhenDone' property to True. Works for me, and I cruise through such sites w.o being interrupted.

Word 2003 template with VBA macros that does not run properly in Word 2011 for MAC

As the title says, I've got a word template with macros that does not run properly in the new Word version from Office 2011 for MAC.
The thing which seems to not work properly is the following code:
Sub Document_New()
myForm.Show
End Sub
The same is with Document_Open()
It doesn't seem to run this code on the Mac version.
Does anyone know why this won't work on the Mac, or if there's another way around to emulate the document_open/document_new function?
EDIT: The document is in the .dot format. And I tried to save it to .doc, then the Document_open() worked just fine, so it seems to not be working in the .dot format.. And Document_New() is not running in .doc since its not a new templatefile based on a document..
EDIT 2: Seems like it was a once only with the Document_open on .doc files. I cant make it work again. So weird! The only event I get working, and this is only when using the .doc file format, is Document_Close() - this works everytime...
EDIT 3: This is just getting weirder. I made a new .doc document with the following code:
Private Sub Document_Open()
MsgBox ("BlaBlaBla")
End Sub
The code only runs if the Visual Basic Editor is open BEFORE I close the word file and try to open it again. If I close the Visual Basic Editor and then the word file, and then open the word file; The code is not run.
??
All VB application events are suppressed if you have the VB-editor active, and the current project is not running. It is an intentional behavior, to prevent unwanted code execution, hence not debuggable.
I have used Workbook_Open() (in Excel), and I can only see it working on newly open Excel Xls (xlsm on 2010), from a non-open VB-editor Excel application.
It will work if you have other doc/xls already open, but not if vb-editor is up.
Have you checked whether Macros are allowed? Do you have generated a certificate and setup your application as a trusted source?
I'm having similar issues. It seems that MS removed support for the Document_New and Document_Open functions in the Word object model for Word 2011. See http://mac2.microsoft.com/vb/1033/Word/html/womscChangesBetweenWord2010and2011.htm

Resources