|
Hellow i m new to C# and i have a project to find duplicate values in two or more Excel files.
to ope the files i use the :
Microsoft.Jet.OLEDB.4.0
and afther the conection i get a dataTable.
the DataTable is inserten in tow a data set that contains all my "files"
Hope this dose the write thing....
i m stuck at finding the duplicates....
can someone point me in the write direction?
10x
|
|
|
|
|
|
Hi all,
I want to use WebBrowser control as a file viewer, but my files are stored in database.
I can open files by WebBrowser control using WebBrowse.Navigate() method.
But,
I want to load my files directly from database to WebBrowser control, instead of saving them to hard disk then loading to WebBrowser control using WebBrowse.Navigate() method.
Can I pass binary data of a file from database to WebBrowser control?
please help...
|
|
|
|
|
With WebBrowser, you either provide a URL to the Navigate() method, which causes the Control to go fetch the corresponding web page, or you provide an HTML document to its DocumentText property, so you provide the page content directly, nothing gets fetched.
The DocumentText also accepts non-HTML documents very much like Internet Explorer does. If you set it to "aha" it will show the word in a default font, size, color, etc. And probably, not tested, if you feed it a PDF document (the binary content of a PDF file) it will display that too, assuming your system has the necessary code to do so, i.e. Internet Explorer is doing that too.
You should experiment a bit.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
OK thank you Luc ...
Now, how to:
Luc Pattyn wrote: feed it a PDF document (the binary content of a PDF file)
|
|
|
|
|
You can set the DocumentStream property of the control. The specified stream will be used to read the data that will be rendered.
|
|
|
|
|
Thank you Giorgi, but it works perfectly with images only
I tried .doc and .pdf files but a garbage data is displayed
i'm using MemoryStream
|
|
|
|
|
you could always fill a memorystream with legal HTML code, then feed that stream to WebBrowser.DocumentStream. HTML knows how to package an image, a PDF, etc; web servers do it all the time, e.g. when you browse to http://www.codeproject.com/App_Themes/Std/Img/logo225x90.gif you well get Bob, because the CP server sends the correct HTML head and body stuff.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
Thanks again Luc,
But.............
what is the HTML code you are talking about?????
what is the HTML code that represent file's binary data??
You may mean < embed ... ???
if so, I must save file to hard disk that is I do NOT want to do
this is my question
|
|
|
|
|
You don't need a physical file; most file operations also exist as stream operations (see e.g. Image.FromFile and Image.FromStream), and a MemoryStream is a Stream. So WebBrowser.DocumentStream should be your friend.
For HTTP, there are a number of classes in .NET; and there is the full HTML specification. I have done some on server side (mostly PHP, where lots of library functions are available, which hide the details); I also once found Sample HTTP Server Skeleton in C#[^] quite interesting. It may actually be what you want: it allows you to hide a web server inside your app, so your WebBrowser (or any external browser on your machine) could see its web pages, which do not exist outside your process.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
Luc Pattyn wrote: you could always fill a memorystream with legal HTML code
Are you really certain for that?In that case if you want to diplay pdf file you need web server to handle requests to the database.WebBrowser control has a property DocumentType , which contains mime type of the document.And if we need pdf we could just set it to "application/pdf" and IE will understand that this is pdf file, not html page.
[Edit]It's read only unfortunately.After after googling I've found that.[/EDIT]
Life is a stage and we are all actors!
modified on Thursday, June 10, 2010 12:52 PM
|
|
|
|
|
Not sure what your question is. To the OP, I see two possible paths:
1. feed an entire MemoryStream to WebBrowser.DocumentStream, by synthesizing a valid HTML response;
2. or provide an embedded HTML server, and use WebBrowser.Navigate().
In both cases, the data could be provided by any means available, such as a database.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
My post means that you can't display pdf in web browser control from binary data, loaded from a database for example.And the forum thread said that you can't set DocumentType property but you could work around that by hooking IE session.I believe it's ultimate hack.
Life is a stage and we are all actors!
|
|
|
|
|
I'm pretty sure it can be done, as I have said several times already.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
|
Luc Pattyn wrote: to prove it (for an image; a PDF would be similar).
Yes if the pdf is located somewhere on the web.But if it's binary data loaded from local db there's only one way, which is closer to dirty hacks instead of normal logic.
Life is a stage and we are all actors!
|
|
|
|
|
What is wrong with you? simply copy whatever binary data you have from the database to a memory stream, then feed the WebBrowser; it will consume everything it understands (HTML; XML; plain text; lots of image formats; PDF).
PDF will only work well if you thaught Internet Explorer to handle PDF files (e.g. with an Adobe component); if it doesn't, neither will WebBrowser.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
Luc Pattyn wrote: PDF will only work well if you thaught Internet Explorer to handle PDF files
Yes you are right only for images handing.It't NOT working with PDFs as it was already mentioned.Simply try that and see with your own eyes what is displayed-the pdf file or something else:
byte[] binarydata = File.ReadAllBytes(@"C:\somefile.pdf");
MemoryStream str = new MemoryStream(binarydata);
webBrowser1.DocumentStream = str;
The problem is that you can't set DocumentType property and IE can't handle Content-Type header automatically.You need to set it somewhere, but you are not able using DocumentStream property only.
Life is a stage and we are all actors!
|
|
|
|
|
Yes, you are right, PDF is different after all. Some research indicates PDF is harder than images, but doable. I'll try to demonstrate when time allows me.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
|
Hi Luc,
I think you and the OP are miscommunicating. Let me see if I can help to clear things up. Say you want to display a PDF in a WebBrowser control. You'd have to 1) have some HTML that makes uses of <embed> to point to a PDF and 2) have that embed tag point to some location that is storing the PDF. Now, if the application making use of the WebBrowser is entirely local, it would be impossible to, say, serve up a PDF file when a certain URL is hit (that would solve the problem of using a stream to serve a PDF, but only if the OP has access to a web server). Now, if the user wants to do everything on the client side without any file access or remote URL access, then it seems there may be a problem displaying the PDF. The OP is claiming that images can be directly displayed by a WebBrowser control (i.e., by passing the memory stream to the WebBrowser) but that the WebBrowser is incapable of displaying a PDF, except for via an <embed> tag. If you use the EMBED approach, you have to point to somewhere, and that somewhere can't be a memory stream.
By the way, the tip/trick you made doesn't work for me. I just see an "X" displayed where there should be an image. Not sure why that is. Perhaps the type of data needs to be specified somehow (usually this would be provided by the server in the HTTP header, but there is no HTTP header AFAIK when you set the WebBrowser control to use a memory stream).
|
|
|
|
|
Thanks for your effort, however it did not change my view on things, so maybe I misunderstood both of you now, or, well, I don't know. I'll try to summarize the main facts so far:
1.
I understood the OP wants to see local data (images, PDF, whatever) which is stored in a database rather than in individual files, and wants to avoid the use of temporary files. I take it all he wants to see is one data object at a time, not a composition of some HTML and one or more database data objects. I am assuming all data types are popular types known to web browsers. If not, special viewers would be required (e.g. a HEX viewer for unstructured, "meaningless", binary data.
2.
The Tip&Trick works fine on my system, which has Vista-32, IE7 as original browser, FF3 as default browser, and using a .NET 2.0 debug build. So I would be inclined to say images cause no fundamental problem, provided they use a format WebBrowser recognizes AND understands (such as GIF).
3.
I have no idea yet what could go wrong for you there. I tested the exact code as published inside a pre-existing WinForm application. So I have some questions for you:
(A) did you change the code at all?
(B) what are your system's characteristics?
(C) Knowing the WebBrowser's size is 500*500, how large is the "X"? I assume it is red?
4.
If the OP uses my T&T code and replaces my synthetic image by some data read from his database, images should work.
5.
Hristo Bojilov signaled PDF would not work that way, and indeed PDF seems more complicated; IE and FF successfully load and display a remote PDF (when typing an URL in the address bar), WebBrowser also successfully navigates to the same PDF file, but fails to recognize a PDF when simply feeding it in its DocumentStream. It then simply shows the bytes as text. Some research has led to two complex ways around it, one of them is an article here on CP; the basic idea is to help WebBrowser in recognizing PDF files and selecting the right way to handle them, and so it is not based on an EMBED or OBJECT tag, as they would require a file. I haven't tested these yet, I have more urgent matters right now.
6. "but only if the OP has access to a web server"
I once created an embedded web server; it basically is a class one adds to an existing project; it takes data and produces web pages (that part of course needs customization), available on localhost at some port number. Doing so enables any WinApp to make data available to a browser running on the same PC, possibly a WebBrowser within the same app. As it basically uses WebRequest/WebResponse classes, it can provide data as well as data type information, so that should suffice to deliver all popular data formats without requiring files. It is pretty complex though (ca.300 LOC), way too large for a Tip&Trick. I would have to test it again for images and PDFs, but it looks like one way to get it all solved.
7.
I also once did some PDF server/client work a few years back, alas all in PHP and based on a couple of PHP libraries, which means impossible to port in a jiffy. I'd rather not go that route.
Conclusion:
- it is work in progress
- please correct me if you disagree with any of the above
- and please provide answers to the questions in (3), about the T&T not working for you.
Cheers.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
I need to save the selected row and the vertical scrollBar's position after a refresh. This is how I do it:
int currRow = myGrid.CurrentRowIndex;
int vScrollPos = ((ScrollBar)myGrid.Controls[1]).Value
myGrid.CurrentRowIndex = currRow;
myGrid.Select(currRow);
((ScrollBar)myGrid.Controls[1]).Value = vScrollPos;
Here's my problem: The grid always jumps to a place where the selected row is at the bottom. 'Select' does exactly that (similar to EnsureVisible of newer grid implementations). But after that there's the vScrollBar repositioning - and it just does nothing. In debug I see the scroll bar value gets updated. In the UI, if I hit the down/up arrow the scrollbar suddenly jumps to where it should have been according to it's updated property - But if I don't click anything the grid is just in the wrong position. I tried refreshing the grid/scroll bar to force a redraw, but it doesn't help. This is really frustrating, as the code is right there and it just doesn't comply
Thanks for your help.
|
|
|
|
|
I am creating an installer where i need to install SQL server express.
i am doing this with help of a bat file. But i am getting an error, saying that..
One installer is running so i can't run another one.
My Question is. How can i install sqlserver express at the time of installation of Application.
Thank you
|
|
|
|
|
Hi,
Let's say there are 3 objects:
Class A
Class B : A
Class C : B
I want to pass through all objects that derive from Type B
C obj1 = new C();
B obj2 = new B();
if(obj1.GetType() == typeof(B)) {
//--Pass through all objects that derive from object B or object A...
}
typeof comapares directly the top types C must equal C... No polymorphic comarison...
How to do a polymorphic comparison? Which keyword or mechanism to use?
Thanks!
|
|
|
|
|