Mahmudunnabi Ответов: 1

как установить ширину столбцов в таблице word из C#


Привет,
Я разработал настольное приложение, которое создает файл word.
мой код находится ниже:
 Word.Application wrdApp;
        Word._Document wrdDoc;
        Word.Table wrdTable;
        Object oMissing = System.Reflection.Missing.Value;
        Object oFalse = false;
<pre> private void button2_Click(object sender, EventArgs e)
       {

           wrdApp = new Word.Application();
           wrdApp.Visible = false;
           wrdDoc = wrdApp.Documents.Add(ref oMissing, ref oMissing,
               ref oMissing, ref oMissing);
          
           Word.Selection wrdSelection;
           Word.MailMerge wrdMailMerge;
           wrdDoc.Select();
           wrdSelection = wrdApp.Selection;
           wrdMailMerge = wrdDoc.MailMerge;

        
           //merge
          // Word._Document oDataDoc;
           int iCount;

           Object oName = "D:\\ddd.doc";
           // Insert a new table with 9 rows and 4 columns.
           
         Word.Table  wrdTable = wrdDoc.Tables.Add(wrdSelection.Range, 9, 4,
               ref oMissing, ref oMissing);
         
           Object oHeader = "'   ','   ','  ','  ' ";
            // Set the column widths.
           wrdTable.Columns[1].SetWidth(300, Word.WdRulerStyle.wdAdjustSameWidth);
           wrdTable.Columns[2].SetWidth(500, Word.WdRulerStyle.wdAdjustSameWidth);
           wrdTable.Columns[3].SetWidth(400, Word.WdRulerStyle.wdAdjustSameWidth);
           wrdTable.Columns[4].SetWidth(100, Word.WdRulerStyle.wdAdjustSameWidth);
	
           wrdDoc.MailMerge.CreateDataSource(ref oName, ref oMissing,
           ref oMissing, ref oHeader, ref oMissing, ref oMissing,
           ref oMissing, ref oMissing, ref oMissing);

           // Open the file to insert data.
           wrdDoc = wrdApp.Documents.Open(ref oName, ref oMissing,
           ref oMissing, ref oMissing, ref oMissing, ref oMissing,
           ref oMissing, ref oMissing, ref oMissing, ref oMissing,
           ref oMissing, ref oMissing, ref oMissing, ref oMissing,
           ref oMissing, ref oMissing);

           for (iCount = 1; iCount <= 2; iCount++)
           {
               wrdDoc.Tables[1].Rows.Add(ref oMissing);
           }

           // Fill in the data.
           FillRow(wrdDoc, 2, "I.D. Number          : ", "" + txtReceipt.Text + "", "Date:", "" + dtDatePicker.Text + "");
           FillRow(wrdDoc, 3, "Name of the patient  :", "" + txtPatientName.Text + "", "Age :", "" + txtAge.Text + "");
           FillRow(wrdDoc, 4, "Referred by          :",""+txtRefDocter.Text+"","Sex:",""+txtSex.Text+"");
           
           
           // Save and close the file.
           
           wrdDoc.Save();
           wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
       }


и
private void FillRow(Word._Document oDoc, int Row, string Text1,string Text2,string Text3,string Text4)
        {
            // Insert the data into the specific cell.
            oDoc.Tables[1].Cell(Row, 1).Range.InsertAfter(Text1);
            oDoc.Tables[1].Cell(Row, 2).Range.InsertAfter(Text2);
            oDoc.Tables[1].Cell(Row, 3).Range.InsertAfter(Text3);
            oDoc.Tables[1].Cell(Row, 4).Range.InsertAfter(Text4);
           // oDoc.Tables[1].Cell(Row, 5).Range.InsertAfter(Text5);
        }


мой файл word:
показывать

M____	                M____1	  M___    M___1
I.D. Number          : 	sfdsfdf	  Date:	  07/15/2010
Name of the patient  :	sfdfds	  Age :	  sfdfd
Referred by          :	sfdfdf	  Sex:	  sfsfsd 


Проблема:
ширина столбцов в ячейке таблицы не работает, и мой заголовок файла word M_... вот так мне это не нужно, но если закрыть заголовок, то появится много заголовков, И мой существующий документ был стерт, но мне это очень нужно, потому что будет вставлена только эта таблица.
Пожалуйста, помогите мне, я в глубоком затруднении.
Любая помощь Заранее благодарна.
Масуда

1 Ответов

Рейтинг:
0

Adam Sin

Если только ширина таблицы, то это то, что я сделал пробу и ошибку. В конечном итоге я получил вот это.

          wrdApp = new Word.Application();
          wrdApp.Visible = false;
          wrdDoc = wrdApp.Documents.Add(ref oMissing, ref oMissing,
               ref oMissing, ref oMissing);

          //Range
          Word.Range wrdtableRange = wrdDoc.Paragraphs.Add(ref oMissing).Range;
          wrdtableRange.Tables.Add(wrdtableRange, 9,1, ref oMissing, ref oMissing);  
            
          //Table - It will only get the last table found for this Word.Range
          Word.Table wrdTable = wrdtableRange.Tables[wrdtableRange.Tables.Count];
           
          wrdTable.AutoFitBehavior = Word.WdAutoFitBehavior.wdAutoFitFixed;
          wrdTable.AllowAutoFit = false;
      
//Below are just test values (you can adjust it if you like.)
//The first column width
wrdTable.Columns.Add(accpt_table.Columns[1]).SetWidth(wrdApp.Application.CentimetersToPoints(5f), Word.WdRulerStyle.wdAdjustNone);

//The second column width
wrdTable.Columns.Add(accpt_table.Columns[2]).SetWidth(wrdApp.Application.CentimetersToPoints(2.8f), Word.WdRulerStyle.wdAdjustNone);

//The third column width
wrdTable.Columns.Add(accpt_table.Columns[3]).SetWidth(wrdApp.Application.CentimetersToPoints(3.2f), Word.WdRulerStyle.wdAdjustNone);

//Then set fourth column width            
wrdTable.Columns[4].SetWidth(wrdApp.Application.CentimetersToPoints(4f), Word.WdRulerStyle.wdAdjustNone);

// If you want to see it without opening it just make it to true
wrdApp.Visible = true;


Kats2512

7 лет спустя???

Adam Sin

Ну, это не моя вина, 7 лет назад я даже не знал никакого программирования. Я увидел этот вопрос и понял, как это сделать, поэтому просто положил туда свое решение. Он работает в VS и последнем Word, но не уверен в старых. Более того, я только что зарегистрировался примерно два дня назад или это три дня назад?

Member 12641543

Молодец, Адам! Спасибо вам за Ваш вклад. Есть и другие, кто ищет эти темы и извлекает выгоду из вашего решения даже в 2020 году. Не обращайте внимания на неконструктивные комментарии, подобные тому, что опубликовал Kats2512.