Plotting data in c#, with a user interface - c#

I am in the process of writing a program in c# (I am using c# because it's a language that I want to learn now), and I want the following features :
plot data from a .csv file, which will look something like the picture
in particular I want to be able to chose the font of the labels, color of dots, etc.
once the data is plotted from the csv file, have an interface that will allow small adjustments, for example move a label around, or add a line between chosen dots
be able to export a pdf out of the chart (or potentially more charts).
So I am creating a Windows application Form which would provide the interface, load the .csv file and parse it. This is fine.
I was wondering what experimented people would suggest for creating the chart and be able to manipulate it (the small interface that I was mentioning above). I saw the chart class of c#, would that be enough ? In particular, would that allow me to interact with the chart, and change my labels ?
Any recommendation is appreciated, thank you!

Related

Adding Ebook Support to a Game

I'm looking to add ebook support (.pdf .txt .epub .mobi .rtf Support) to a game I'm making in Unity using C#. Thing is I really do not know where to start when it comes to this and most of my google searches have gotten me nothing but Ebooks about programming or game development. So I'm hoping someone here would have a good idea where I could start and/or information that would help set me in the right direction.
So just to summarize my comments on the OP:
With the least amount of work, embedding a web browser control like Webkit is probably the best option. It should properly read all the common filetypes you mentioned, save for .epub and .mobi. A separate library or control will need to be obtained or coded for those to work. Additionally, if the user already has a default program set up to open those filetypes, you can open them outside of the game with Process.Start(...) which is part of the System.Diagnostics namespace.
If it comes down to you having to code this yourself, a PDF is just drawn graphics on a canvas, txt is just raw text data, and an rtf is text data with some markup to get the formatting right. Coding a component that opens those for you should not be abnormally difficult.

Programmatically change PNG / PSD image colour in .Net

I have a number of web controls, which are made up of png images. The simplest is a button.
I need to be able to generate these controls with different colours depending on the colour selected by the client.
The images are .PSD files, layered before exporting to png.
My idea was to allow the client to pick one colour and use a layer filter in the psd to change the overall colour of the image and programmatically export the .PSD to PNG on the server. I looked into using the Photoshop CS Interface via COM, but haven't got my head around it, has anyone else used it for a similar task?
Alternatively I could read the png into memory and perform colour replacement, but this seems really complex for what reads like a simple(ish) task.
Many thanks in advance
.PSD is quite complicated and poor documented file format, that is constantly receiving new features from Adobe, so editing them is no way an easy task.
One way is to use Photoshop batch processing, which means photoshop installed on server, but as long you you wished to make that through COM, it should not be a problem.
One of the starting points may be: http://www.webdesignerdepot.com/2008/11/photoshop-droplets-and-imagemagick/
Another way would be to try composite layers using c#, that means you would have some layers ready (textures/borders/etc), some would be created at runtime and all those layers would be merged at runtime using c#.

How to import the data from an Excel spreadsheet so it can be manipulated in C#

I have an excel spread sheet (well, hundreds of them) which I need importing into a database.
If the excel data was in a nice uniform format I would simply save them out to CSV, read them in using something like LINQ to CSV and save the required data away.
However, the excel spread sheet is 'uneven' in that different groups of cells contain different data.
I need a way of grabbing the data and then working with cell references to grab the bits I need and save them to the database.
What's the best way to achieve this?
Thanks
UPDATE some more information
I have numerous spread sheets, all identical in structure that need to be imported into a database. The import is not simple in that different chunks of data from the spread sheet will go into different tables. The excel document itself contains a few sections (basically question / answer) type data. For each different section I need to grab the data, shape it into a form that makes sense in terms of the database and save it.
Ideally I would like to create a quick little WPF app that will let me select a spread sheet hit a button and perform the import.
You could use the Excel Object Model to read the data if you do it in a non web environment.
See for example How to automate Microsoft Excel from Microsoft Visual C#.NET.
If it has to be inside a web application. I suggest to use Aspose Cells.
Turn the Excel Spread sheet into an ODBC (Open Database Connectivity) Data Source so you can access it just like you would any database:
http://www.datamystic.com/datapipe/excel_odbc.html
Then access it just like any database using ODBC:
http://msdn.microsoft.com/en-us/library/system.data.odbc.odbcconnection(v=vs.71).aspx
When the data is not uniform, it is often better to keep your approach as simple as possible in the first instance. Start with vba and the "Range" object (which is part of the excel object heirarchy). From there you can increase the level of automation and in most instances reuse this "Range" work.
avariable = Range("A2:A5")
That notiation is not going to change very much. It wont matter what final target language you use (language: C# / vba / etc).
There are a number of other ways of going about this -- java based / xml based / c# based / and a few other really cool ones that only apply to certain niche situations. If you can provide more information about your use case, then perhaps I can suggest some more things to try.
Q & A
example link for automation from C#: http://support.microsoft.com/kb/302084
You should probably take a look at Microsoft's Visual Studio Tools For Office (VSTO), which handles a lot of the unpleasant COM/interop stuff for you.
To those who may be interested I ended up using LinqToExcel:
http://code.google.com/p/linqtoexcel/
Did exactly what I was after with minimal fuss. Excellent

How to print data form C#

I've searched Stackoverflow and google and found many ways
how I can print stuff in C#.
The best way for me would be to populate blank white windows form
with some label, textbox and picturebox elements and print it as a windows form.
This way is very poor because it prints in 72 DPI, and is not flexible for multiple
pages print.
Next way that I found that would be good is using iTextSharp, but there is a problem
that iTextSharp only generates PDF-s, and you have to open it in PDF viewer and print
from there.
I love this way of thinking where I create a paragraph, and then fill it with text and graphic, so I found this thread
http://www.devarticles.com/c/a/C-Sharp/Printing-Using-C-sharp/
where it discusses how to create your own printing engine in C#, something like iTextSharp,
but very lightweight...
Now that I've said that, I want to know is there any ready to use printing engine that would be like iTextSharp, made for printing, not for PDF generation? What is the best way to print something, without using reporting services like CrystalReports.
I think Crystal Reports wouldn't work for my case cause I don't want to print generic reports, but some text and graphics that I need to dynamicaly generate every time I need to print.
I found that it was much easier to do printing using the printing stuff in WPF.
EDIT
XPS is the page description format that Microsoft included into .NET with .NET 3.0. It is nominally part of WPF, and is integrated with the WPF form layout model. But you can create XPS documents in memory and send them to printers, from any .NET app, including a WinForms App.
An example:
http://statestreetgang.net/post/2008/03/Creating-an-XPS-document-in-memory-via-the-DOM.aspx
It is approximately equivalent to the iTextSharp capability you explored, except:
you can do it all in memory if you like, no need to save to a filesystem file. Of course if you want to save to a filesystem file, you can do that too.
you don't need an external viewer in order to start the print.
If you are new in programming and you have some data like from Data Base, and you want to print it after retrieving it from Data Base. Then just follow this link it will guide you step by step.
Print Data in Dot Net (C#,Vb.net)

Print simple numbers on label printer (Brother, Dymo, etc) from C# (.NET)

As part of a project I'm working on, I need to automate a label printer. It will be one of those inexpensive USB printers from Brother or Dymo (open to other suggestions). All it needs to do is print two numbers on one label.
The challenge is that I'm hoping to keep it ultra-simple in C#. It seems like the solution from Brother is antiquated, and the Dymo SDK is a little more complicated than what I would like. Both solutions require the end user to install the full blown application.
Do I have to suck it up and use the low-level COM solution provided by Dymo? Or has someone found a simpler way to print uncomplicated labels?
DYMO now has a very handy framework that can be used to create and print labels using templates or built in XML.
Here is the download:
http://sites.dymo.com/Support/Pages/ProductDetails.aspx?MainTab=1&Tab=1&ProductID=DYMOSDK(DYMO)
Here is the documentation:
http://www.labelwriter.com/software/dls/sdk/docs/DYMOLabelFrameworkdotNETHelp/html/N_DYMO_Label_Framework.htm
Install the labelmaker as a printer on the computer.
Then, use mail-merge from Excel to Word.
Create a spreadsheet with rows representing labels and columns representing pieces of information on that label.
Use mail-merge in MS Word using the spreadsheet as the data.

Categories

Resources