|
|
How we can Dynamically generate a MS Word document using ASP.Net?
Jijo kuruvila
software developer
trivandrum
|
|
|
|
|
hi,
I was going to make an article about it;)
I suppose you have Word2003, ASP.NET1.1 and VS.NET2003. It may be ok with lesser verions.
try some of folowing steps:
1)read MSDN - especially this[^]
2)download & install Office PIA[^]
3)reference PIA in ur project
4)run Start->ControlPanel->AdministrativeTools->ComponentServices
5)ComponentService->Computers->MyComputer->DCOMConfig
find "Microsoft Word Document" and set permissons for user ASPNET
6) use Word's object to generate document... see MSDN
hope it helps, I got stuck on it for a while some time ago
best regards,
David 'DNH' Nohejl
Never forget: "Stay kul and happy" (I.A.)
|
|
|
|
|
As I said in my reply (BTW, John, please hit "Submit" only once and please delete duplicate posts in the future), you must be careful using Word on a multi-threaded server application ASP.NET. It is not recommended. The caller is responsible for thread-safety in many cases. Some solutions will use pessimistic concurrency to ensure thread safety (letting only one caller run at a time and queuing the rest) and that will degrade performance becanse your multi-threaded application all of a sudden acts like a single-threaded process.
Depending on your requirements, using XHTML with the right ProgID processor instruction or the Word 2003 XML Schema will allow you to use a 100% managed solution and still generate content that Word would have no problem with (and in the case of the Word 2003 XML schema - you can do everything Word can do generating a 100% compatible Word Document).
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
|
How we can Dynamically generate a MS Word document using ASP.Net?????
Jijo kuruvila
software developer
trivandrum
|
|
|
|
|
If all you need to support was Word 2003, you can use the published Word 2003 XML Schema that you can download (as well as documentation) at http://www.microsoft.com/downloads/details.aspx?familyid=fe118952-3547-420a-a412-00a2662442d9&displaylang=en[^]. Generate XML through a variety of means (using the DOM with the System.Xml classes or using an XSLT using the System.Xml.Xsl classes) and - if you display the generated content in Internet Explorer and have Word 2003 installed - it should open up in Word.
If you need to support downl-level versions, I suggest you use XHTML (XML with a default namespace to mimic HTML for older browsers) with the following processor instruction at the top:
<?xml version="1.0">
<?mso-application progid="Word.Document"?> This would be supported by Word 2000 and newer.
If you want to support older clients yet and generate binary content, then you'll have to use automation (generating an RCW (runtime callable wrapper) from the Word typelib usign VS.NET->Add Reference->COM or tlbimp.exe), which isn't safe in a multi-threaded server application like ASP.NET. You'd be responsible for thread safety.
If you must use that route, be sure to create an RCW (an "interop assembly") from the oldest typelib you want to support. Since Office components (and all COM servers should be written this way, though that's not always the case) are backwards compatible, they support older interfaces. You could even generate an RCW from a new typelib, but you must be sure not to use interfaces that are new to a version you might want to support.
Because this would be on a server you would most likely control, however, you should get some control over what version is installed.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Thanx a lot....
Jijo kuruvila
software developer
trivandrum
|
|
|
|
|
Hi!
Does any one knows how to put a Form in the center of the screen? i.e. how to find its (screen) middle point?!
Thsnks!
AlexMartins
|
|
|
|
|
There's this property StartUpPostion (or something like that) that you can set to CenterScreen to achieve that effect when the form is created.
-- LuisR
Luis Alonso Ramos
Intelectix - Chihuahua, Mexico
Not much here: My CP Blog!
|
|
|
|
|
AlexMartins wrote:
Does any one knows how to put a Form in the center of the screen? i.e. how to find its (screen) middle point?!
As mentioned, you can set the form startup position. More info about the screens can be found using the Screen class.
BTW, don't forget that a lot of machines, like mine, have more than one monitor, with different resolutions each. Always show things on the same screen than your application is running and everything will be fine.
Yes, even I am blogging now!
|
|
|
|
|
i have simple question what are the benefits of using SqlTypes (especially regarding performance). I know there is the IsNull property but what else?
|
|
|
|
|
There is no Type called SqlTypes in the BCL. Do you mean the SqlType enumeration? You should use this when using parameterized queries and adding DataColumn s to ensure that data is represented correctly, as well as for design-time purposes and using classes like the SqlCommandBuilder . This helps determine what type of data is represented.
Imagine if all properties on every class were simply defined as object . How do you know what type of data to assign to a property in such a case?
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
I think he is referring to the various struct s defined in the System.Data.SqlTypes namespace.
Charlie
if(!curlies){ return; }
|
|
|
|
|
Perhaps, but that's why one should be a little more descriptive.
To the original poster, the documentation for the System.Data.SqlTypes (if that is, in fact, what you meant) explains it quite clearly:The System.Data.SqlTypes namespace provides classes for native data types within SQL Server. These classes provide a safer, faster alternative to other data types. Using the classes in this namespace helps prevent type conversion errors caused in situations where loss of precision could occur. Because other data types are converted to and from SqlTypes behind the scenes, explicitly creating and using objects within this namespace results in faster code as well.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Hi...
Can anyone tell me how to take a screenshot when the user press on a button?
I have no idea how to do this!
I does not know what to seach after at msdn!
Can anyone help me please?
|
|
|
|
|
|
Funny signature. Reminds me of the "Kluge Antworten auf dumme Fragen" from Al Jaffee in the MAD magazine of the 1980s
--
Affordable Windows-based CMS: www.zeta-producer.com
|
|
|
|
|
How can I find out what network cards are installed on my computer at run-time? Based off this information I want to find out additional information about each connection settings.
Thanks,
Einar
|
|
|
|
|
Windows Management Interfaces (WMI) is your answer, and can be queried using the System.Management classes. Specifically, the CIMv2 class (not a .NET class) Win32_NetworkAdapter is what you want to enumerate and query. To do that, you use a ManagementObjectSearcher :
using System;
using System.Management;
class Test
{
static void Main()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
"select * from Win32_NetworkAdapter");
foreach (ManagementObject nic in searcher.Get())
{
Console.WriteLine("Name: " + nic["Name"]);
Console.WriteLine("Network connection ID: " +
nic["NetConnectionID"]);
Console.WriteLine("Status: " + nic["NetConnectionStatus"]);
Console.WriteLine();
}
}
} You can install the Management Classes and Events add-in for either VS.NET 2002 or 2003 from http://msdn.microsoft.com[^] and actually create typed classes for whatever WMI classes you want, too.
For more information, search for "WMI" by clicking "Search comments". I've talked about this topic quite a bit and have given links to much more information over the course of the last couple years.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Thank you very much for your reply. You put me on the right track in the right direction. However I have some additional questions.
Using the code you supplied I got a lot of "network cards" that I didn't know I had. I guess I could narrow my search down with a WHERE clause in the SELECT statement.
Do you know where I can find additional information about the information contained in these tables and the names of these tables?
Sincerely,
Einar
|
|
|
|
|
|
I've been charged with working on the help system for an application; right now we can associate keywords with controls, and the help system is basically a wrapper around the HelpProvider class. This kind of help requires that I manually go through every control that needs help (usually our various dialogs and large forms).
What I was wondering, is whether there is some property in the designer for the help keyword? If not, can the MS people around here tell me whether this is planned for Whidbey?
Also, has anyone tried replacing this manual help keyword specification with a system based on reflection? I was thinking we might try something where there is a base "helpable control" where when it is initialized it automatically registers a keyword based on its name with the HelpProvider. If you have done something like this before, could you give any tips or hints? Thanks.
|
|
|
|
|
The HelpProvider is an IExtender interfaces that "adds" a property to your controls. This value is actually persisted along with the Control (if you write your own IExtender component, you're responsible for persisting this map). Work with the HelpProvider and you shouldn't have any problems.
If that doesn't work, the designer always writes a values to the Control.Name property, which you could use as a keyword. If you support nesting of container controls that contain the same names, do something similar to ASP.NET and built a delimited name that resolve the child, like "Parent1_Parent2_Control1" (this is what the INamingContainer marker interface for ASP.NET is for).
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
if my application has been teminated form Windows task Manager or from debug. Can i do any clean up work for my application before really shut it down?
|
|
|
|