|
It's only an experimental Alpha right now. I don't plan to release a Beta version until Spring of next year.
|
|
|
|
|
Please tell me how to display a table of the Word document in DataGridView?
|
|
|
|
|
What have you tried?
Where are you stuck?
What do you need to know?
Have you read the table from the word file?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
In Word there is a table. I created a form WindowsForms and added elements DataGridVew and Button.
private Word.Application wordapp;
private Word.Document worddocument;
private Word.Range wordcellrange;
private void button3_Click_1(object sender, EventArgs e)
{
wordapp = new Word.Application();
wordapp.Visible = true;
worddocument = wordapp.Documents.Open("C:\\Users\\Desktop\\Table.doc");
Word.Table _table = worddocument.Tables[1];
int a = _table.Rows.Count;
int b = _table.Columns.Count;
for (int i = 1; i <= a; i++)
for (int j = 1; j <= b; j++)
{
wordcellrange = _table.Cell(i, j).Range;
dataGridView3.Rows[i - 1].Cells[j - 1].Value = wordcellrange.Text;
}
}
Code only opens an existing file.
|
|
|
|
|
And?
Have you looked at what happens with the debugger, so you have an idea what is going on? If not, do - you need to know what part of that is doing what you expect and what part isn't. And we can;t do that for you - we don't have access to your files!
When you have debugger results, let us know what is going on - if that doesn't let you directly what the problem is.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Index outside the range. It in a debugger.
|
|
|
|
|
Good. So look at teh line that produces teh error - I don't know which it is, but the debugger will tell you.
I'd guess it's this one:
Word.Table _table = worddocument.Tables[1];
In which case, there are one or less tables in the document - remember that array indexes are zero based.
I'd check the return value to make sure that there is at least one table in there myself, and report / log a problem if there isn't.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
error in this line
dataGridView3.Rows[i - 1].Cells[j - 1].Value = wordcellrange.Text;
|
|
|
|
|
And?
What does the debugger say is the value of i and j ? For that matter, what does it say about the number of rows and cells in the DGV?
Remember, I can't see your screen...
This is basic debugging - you should be able to do this unprompted!
[edit] Gah! Tablet autocorrect![/edit]
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
sorry! I thought that specified it
the number of rows.value of i. I changed the values and nothing happened
|
|
|
|
|
Yes, but that doesn't mean that the DataGridView had the same number of rows and columns...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I understood, in what an error! everything works thanks!
|
|
|
|
|
Easy mistake to make.
You're welcome!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
A Word document is not meant as a data source other than for being read by a human.
If you have to do this for one single document, it's not worth the programming effort: Copy-paste the table into Excel and save it as CSV or XML, then read that file into a DataTable and make the DataTable or its DataView the DataSource of your DataGridView.
If you "plan" on doing this regularly for constantly newly created Word documents, do yourself a BIG favor and get your data from wherever it comes from before it "goes" into the Word document. In case someone types it manually into the Word document, tell him to type it into an Excel sheet first. That Excel sheet can then be used as a source for the table in the Word document and as a source for your DataGridView.
Recursion: see Recursion.
|
|
|
|
|
The file contains a table. It is necessary to take the table out of the file on the form. To me set this task. But how to work with Excel in dataGridView I do not know. Please, tell me.
|
|
|
|
|
You misunderstood me, I didn't mean that you can directly connect Excel with a DataGridView somehow.
But since you already have some code for accessing the table in the Word document, as I've seen from your reply to OriginalGriff, don't mind my answer and follow his advice: Run it in the debugger and analyze what's working and what's not.
Recursion: see Recursion.
|
|
|
|
|
Index outside the range. It in a debugger.
|
|
|
|
|
Try to figure out why by stepping through the code and comparing the values of your variables to your expectation.
Recursion: see Recursion.
|
|
|
|
|
I have a trackbar control that is adjusting the brightness of the background color of a form. Eventually, I'll modify it to adjust an image's brightness. If you look at how the brightness slider works in the colorDialog Control, as you move up and down, the value changes from white to black, but in the middle, the hue of the original color is never lost. The problem with my code is that once I reach the high end of brightness (white), or the low end (black), I lose the hue, and the trackbar becomes an adjustment of grayscale brightness, instead of an adjustment of the original color's brightness. So, I need to know how to change my code to adjust the brightness while preserving the hue.
int valueOne = 0, valueTwo = 0, valueNew = 0;
bool count = true;
private void Form1_BackColorChanged(object sender, EventArgs e)
{
if (count == true)
trackBar1.Value = (this.BackColor.R + this.BackColor.G + this.BackColor.B) / 3;
count = false;
valueOne = trackBar1.Value;
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
int bgRed = 0, bgGreen = 0, bgBlue = 0;
valueTwo = trackBar1.Value;
valueNew = valueTwo - valueOne;
bgRed = this.BackColor.R + valueNew;
bgGreen = this.BackColor.G + valueNew;
bgBlue = this.BackColor.B + valueNew;
if (bgRed > 255)
bgRed = 255;
if (bgGreen > 255)
bgGreen = 255;
if (bgBlue > 255)
bgBlue = 255;
if (bgRed < 0)
bgRed = 0;
if (bgGreen < 0)
bgGreen = 0;
if (bgBlue < 0)
bgBlue = 0;
this.BackColor = Color.FromArgb(255, bgRed, bgGreen, bgBlue);
}
Thank you
|
|
|
|
|
Don't use the current BackColor as input for the calculation of the new BackColor. Store the initial BackColor in some additional variable that will never be changed and use that one as input for the calculation of the new BackColor. To adjust for that, don't use the the slider delta but the absolute slider value to calculate the new BackColor.
Currently you do:
BackColor -> apply slider delta -> new BackColor v
^--------------------------------------------|
Suggested:
InitialBackColor -> apply slider position -> current BackColor
Recursion: see Recursion.
|
|
|
|
|
I appreciate the reply. I'm sorry, but I'm really not understanding what you're getting at. Could you provide more details, or perhaps some sample code?
EDIT: To expand on that, one thing I don't understand is what I do with that initial value. Let's suppose I put it in three int variables, int R, G, and B. If I add that to the absolute value of the trackbar, in many cases, the result will be over 255, since I'm using the absolute value of the trackbar instead of the delta. The code will be adjusting this to 255. But this will be resulting in a lot of white results. Which makes me wonder if I'm understanding correctly.
Thank you
modified 21-Mar-15 18:51pm.
|
|
|
|
|
Alright
Let's assume an initial background color of RGB 20/50/150.
1) Determine the color component with the smallest value and subtract it from 255. In this case: (Red) 255-20 = 235
2) Determine the color component with the highest value. In this case: (Blue) 150
3) Set the Maximum of the TrackBar to the sum of those values: 235+150 = 385
4) Set the Value (Position) of the TrackBar to the value from Step 2: 150
5) When the slider gets moved, take its Value and subtract the value from Step 2. Add the result of this to the color components of the initial background color (with Min/Max of 0/255 of course) and set it as current background color.
Example 1:
Let's assume the TrackBar got moved to 0. Then we calculate: 0-150 = -150
R: 20 + -150 = -130 ==> 0
G: 50 + -150 = -100 ==> 0
B: 150+ -150 = 0
Example 2:
Let's assume the TrackBar got moved to 200. Then we calculate: 200-150 = 50
R: 20 + 50 = 70
G: 50 + 50 = 100
B: 150+ 50 = 200
Example 3:
Let's assume the TrackBar got moved to 385. Then we calculate: 385-150 = 235
R: 20 + 235 = 255
G: 50 + 235 = 285 ==> 255
B: 150+ 235 = 385 ==> 255
Looks good?
Edit: If you want to achieve that all three color components reach the min/max value "at the same time" so that no value has to be "clipped" (which will probably produce a better result for image brightness adjustment) you would have to apply some slightly more sophisticated math but I think you'll get the basic idea from the above method.
Recursion: see Recursion.
modified 21-Mar-15 20:17pm.
|
|
|
|
|
Okay, thank you very much for the additional info. I have work to deal with tonight, but I'm looking forward to trying this, I'll let you know how it works out. Thanks again!
|
|
|
|
|
You're welcome!
Recursion: see Recursion.
|
|
|
|
|
Unfortunately, this didn't work. It's still losing its hue once I get down to black or up to white. Suggestions?
Thanks
|
|
|
|