How do I print Excel without hidden cells with C#? - c#

I'm using C# and I want to make an Excel file without hidden cells.
I did some actions to hide rows, and I want to make an Excel file with that, but the Excel file showed full rows with hidden rows.
Is there any options or tip to hide invisible rows?
List_Com.Sheets[0].Rows[i].Visible = false;

Try also to set the row height to 0.

Related

C# Excel from textbox to excel cell

I've a little problem about to copy and paste from textbox to excel cells. Basicly, When I get data from website to textbox, I can not put this values into excel cells regularly.
My data:
xxxxxxx-qqq-1111-13661 3********************* 01/02/2020 02/03/2016 0
xyzxyzx-qqq-2222-11067 3********************* 02/03/2016 12/09/2028 0
qazwsge-qqq-1234-01940 6********************* 03/04/2015 09/01/2002 0
qweqwfe-qqq-4567-01941 6********************* 04/05/2013 17/06/2025 0
You can see 4 space between columns.
When I copy this data from textbox with manually or [Clipboard.SetText(textBox1.Text)] technique, Again I can paste any excel sheet manually. But, When I selected any cell, I did selected and just one clicked to cell, I can paste my data one by one regularly. (When I double clicked to cell, I can not paste data to cells one by one, just stay into one cell)
I tried this code but, it gave reaction like a double click.
Clipboard.SetText(textBox1.Text);
Excel.Range area = (Excel.Range)xlPage.Cells[2,1];
area.Value2 = Clipboard.GetText();
My question is, How can I do the works like manual with C# codes? Is it possible for this manual technique?
Best regards,
In excel VBA you can use method TextToColumns to do what you want.
See https://learn.microsoft.com/en-us/dotnet/api/microsoft.office.tools.excel.namedrange.texttocolumns?view=vsto-2017 for C#.NET example.
Below is the sample code for your application.
Clipboard.SetText(textBox1.Text);
Excel.Range area = (Excel.Range)xlPage.Cells[2,1];
area.Value2 = Clipboard.GetText();
area.TextToColumns(area, Excel.XlTextParsingType.xlDelimited, Excel.XlTextQualifier.xlTextQualifierDoubleQuote, true)
Thanks for your answers,
I found the solution. You can try the PasteSpecial method.
Clipboard.SetText(textBox1.Text);
Excel.Range area = (Excel.Range)xlPage.Cells[2,1];
area.PasteSpecial();

C# WPF - Cut and then copy an entire Excel row

I have to edit an Excel sheet with a WPF in C# and already ordered the rows by one column. But now I need to cut a few rows and write them to another position in the sheet.
Is ther anyway to completely cut out an entire row and insert this row to another position in the sheet?
Looks like this has been answered
https://social.msdn.microsoft.com/Forums/vstudio/en-US/78059590-c294-47b4-a656-aec8ca51779f/c-excel-cut-or-copy-an-excel-row-and-move-to-another-row?forum=exceldev

Copying Data with Skipped Columns From Excel and Pasting into DataGridView

I've managed to copy from excel and paste it into a datagridview in C#. But when I hold down ctrl, select columns that aren't adjacent to each other, copy and paste into datagridview - all the columns in between were also pasted. Is there a way around this without actually opening the Workbook?
Current implementation simply retrieves Clipboard.GetDataObject().GetData, formats that into a string and delimit by tab.
Unfortunately excel just copies everything not just your selected columns for outside world. You can view what is copied to the clipboard using a clipboard viewer (I've used Free Clipboard Viewer). I've created a worksheet with following
1,2,3,4,5,6
1,2,3,4,5,6
1,2,3,4,5,6
1,2,3,4,5,6
and selected and copied columns 2, 4 and 6. clipboard viewer shows me what I've copied not three columns but all columns from 2 to 6 (actually Sheet!C2:C6).
You can always open excel using interop or 3rd party component and get what you need and paste it manually which I had to do for converting a grid to excel like grid. I manually parsed comma separated values and set the cells individually.
edokan is right when he says that the middle columns are also copied. Is there a setting in Excel which can prevent that? NO.
However here is the simplest way to do achieve what you want.
Before copying Delete unnecessary columns. Then copy and paste. Once done you have two options
Close the Excel file without saving
Press CTRL + Z to undo.
If you want a Code solution then yes there is a possibility. Create a VSTO Add-In. What this Add-In will do is copy the relevant columns to clipboard. Not the same as CTRL + C

I am displaying the contents of an Excel file in a Gridview. How do I handle merged cells?

I want to read and display an excel file in a web page. I am using Microsoft.Office.Interop.Excel in .aspx.cs and GridView in .aspx. I am just reading it into a DataTable and binding it to GridView.
The problem with this is, I can't handle merged cells. For example, if two columns are merged in Excel, while displaying, it will show two columns with the value in first cell and second cell will be empty. I just want to retrieve the sheet as it is. Is there any way to achieve this?
Microsoft.Office.Interop.Excel is designed to provide programmatic access to excel files. It will do some formatting work (see Text property) but most of the difficulty of rendering is left to the consumer (your program).
MergeCells will return True if you have a merged cell and MergeArea will return a Range containing the merged cells. You can then use the RowSpan and ColumnSpan fields of the GridView's cells to duplicate the functionality.

How do I make a Excel cell contents invisible

I have an excel file(VSTO), which will be uploaded with data.
However I want to make one cell invisible, as it contains one of the ID's which should not be revealed to the user.
I use Excel.Range.Value2 property to set the value.
Now I want to make the value inside it invisible
I am using C#, how do I accomplish the above.
This will make cell content invisible, untill you click on them then you can change the data. Here
Microsoft.Office.Interop.Excel.Range descriptionRange31 = xlApp.get_Range("A18,A25,B18,B25");
descriptionRange31.NumberFormat = ";;;";
I am not sure how to make it invisible. However, you can just copy and save the value in a variable in memory and replace it by string.Empty.
Declare the variable in your plug-ins application object in such a way that it stays alive as long as Excel is open.
If you want to persist it even when Excel application is closed, then either write it to disk or save it in the properties of the Excel workbook (the same place that is visible in Properties page of the workbook) after encoding it.
I have worked on the VSTO Excel applications.
In my project i have used specials Ids to identify each column uniquely..
So, i would suggest rather than getting into coding you can do following 2 actions to make it invisible.
Go to ur visual studio, open design mode of the workbook.
Enter ur ids in columns or rows , wherever u want to (lets assume in column C and Row 5,6)
1.You can see the horizontal / vertical strips at the top and left side of excel which we use to resize the columns n rows ..just adjust it in a such a way that that particular column will be hidden
as u can see the image, i adjusted columns to Hide Column "C" and Rows to hide row no 5 and 6.
2.Now open excel (not from Visual stodio, from windows explorer) pres Alt+T+P+P
and protect the sheet using a perticular password and your are done.
Now user can not make any changes in columns or rows and date remains invisible.
Regards,
Sangram Nandkhile
I'm not sure you can make the contents of a cell "invisible." However, you could go a long way toward that goal by:
Placing the hidden information within a hidden column in a separate worksheet
Password protecting the worksheet structure to prevent unhiding of that hidden column
Hiding the protected worksheet
Password protecting the workbook's VBA project from editing
The security of this approach is not 100% because Excel protection is not exceedingly difficult to break. However, the combination of obscurity (since the worksheet tab is not even visible to the user) and protection of the VBA Project from editing (so even if someone knows the hidden sheet is there, it won't be as easy to code the unhide method) and password protection of the worksheet structure (so it won't be easy to unhide the protected column) should prevent all but the most determined peekers from seeing what you're hiding.
I have not worked with VSTO, so I can't code this for you. The approach is valid though, and all API hooks to achieve it are probably available.
I'm not sure if this answer match your level of question, but this if I would into your problem description. I would just make the font color same as the background and lock the cell from editing (which you of course handle from code, while write/change the value) and go for locking the excel sheet except the cells/regions that explicitly marked as opened.

Categories

Resources