我们如何从 C# 到 Microsoft Word 绘制表格?
How can we draw tables from c# to MicrosoftWord?
我们如何将数据 table 绘制成 table 从 c# 到 MicrosoftWord?
我已经输入了我需要的样品图像,合作销售,分店1和分店是数据table
请给我一个 suitable 答案
private void ExportToWord(DataSet Collection)
{
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\endofdoc";
Microsoft.Office.Interop.Word._Application objWord;
Microsoft.Office.Interop.Word._Document objDoc;
objWord = new Microsoft.Office.Interop.Word.Application();
objWord.Visible = true;
objDoc = objWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
int i = 0;
int j = 0;
Microsoft.Office.Interop.Word.Table objTable;
Microsoft.Office.Interop.Word.Range wrdRng = objDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
string strText;
int tables = Collection.Tables.Count;
for (int k = 0; k < tables; k++)
{
int columns = Collection.Tables[k].Columns.Count;
int rows = Collection.Tables[k].Rows.Count;
string[] columnNames = Collection.Tables[k].Columns.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToArray();
Microsoft.Office.Interop.Word.Table objNewTable;
objNewTable = objDoc.Tables.Add(wrdRng, rows, columns, ref oMissing, ref oMissing);
objNewTable.Range.ParagraphFormat.SpaceAfter = 8;
objNewTable.Rows[1].Range.Font.Name = "Times New Roman";
objNewTable.Rows[1].Range.Font.Bold = 1;
objNewTable.Rows[1].Range.Font.Italic = 1;
objNewTable.Rows[1].Range.Font.Size = 9;
for (int l = 0; l < columnNames.Count(); l++)
{
objNewTable.Cell(1, l).Range.Text = columnNames[l];//"Item Name";
//objNewTable.Cell(1, 2).Range.Text = "Price";
}
try
{
// objTable.Borders.Shadow = true;
objNewTable.Borders.Shadow = true;
}
catch
{
}
}
}
通过上面的代码得到下图
private void word(DataSet Collection)
{
Word._Application objApp;
Word._Document objDoc;
try
{
object objMiss = System.Reflection.Missing.Value;
object objEndOfDocFlag = "\endofdoc"; /* \endofdoc is a predefined bookmark */
//Start Word and create a new document.
objApp = new Word.Application();
objApp.Visible = true;
objDoc = objApp.Documents.Add(ref objMiss, ref objMiss,
ref objMiss, ref objMiss);
int tables = Collection.Tables.Count;
for (int k = 0; k < tables; k++)
{
int columns = Collection.Tables[k].Columns.Count;
int rows = Collection.Tables[k].Rows.Count;
string[] columnNames = Collection.Tables[k].Columns.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToArray();
//Insert a paragraph at the end of the document.
Word.Paragraph objPara2; //define paragraph object
object oRng = objDoc.Bookmarks.get_Item(ref objEndOfDocFlag).Range; //go to end of the page
objPara2 = objDoc.Content.Paragraphs.Add(ref oRng); //add paragraph at end of document
objPara2.Range.Text = "Test Table Caption"; //add some text in paragraph
objPara2.Format.SpaceAfter = 10; //defind some style
objPara2.Range.InsertParagraphAfter(); //insert paragraph
objPara2.Range.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape;
//Insert a n x n table, (table with n row and n column)
Word.Table objTab1; //create table object
Word.Range objWordRng = objDoc.Bookmarks.get_Item(ref objEndOfDocFlag).Range; //go to end of document
objTab1 = objDoc.Tables.Add(objWordRng, rows+1, columns, ref objMiss, ref objMiss); //add table object in word document
objTab1.Range.ParagraphFormat.SpaceAfter = 6;
int iRow, iCols;
string strText;
for (int jk = 1; jk <= columnNames.Count()-1; jk++)
{
for (iCols = 0; iCols < columnNames.Count(); iCols++)
{
strText = columnNames[iCols];
objTab1.Cell(1, iCols+1).Range.Text = strText; //add some text to cell
}
objWordRng.InsertParagraphAfter();
int rowCol = 0;
for (iRow = 2; iRow <= rows + 1; iRow++)
{
int cols = 0;
for (iCols = 1; iCols <= columns; iCols++)
{
strText = Convert.ToString(Collection.Tables[k].Rows[rowCol][cols]);
objTab1.Cell(iRow, iCols).Range.Text = strText;
cols++;
//add some text to cell
}
rowCol++;
}
objTab1.Rows[1].Range.Font.Bold = 1; //make first row of table BOLD
// objTab1.Columns[1].Width = objApp.InchesToPoints(3); //increase first column width
}
//Add some text after table
objWordRng = objDoc.Bookmarks.get_Item(ref objEndOfDocFlag).Range;
objWordRng.InsertParagraphAfter(); //put enter in document
objWordRng.InsertAfter("THIS IS THE SIMPLE WORD DEMO : THANKS YOU.");
try
{
// objTable.Borders.Shadow = true;
objTab1.Borders.Shadow = true;
}
catch
{
}
}
object szPath = "test.docx"; //your file gets saved with name 'test.docx'
objDoc.SaveAs(ref szPath);
}
catch (Exception ex)
{
MessageBox.Show("Error occurred while executing code : " + ex.Message);
}
finally
{
//you can dispose object here
}
}
我们如何将数据 table 绘制成 table 从 c# 到 MicrosoftWord?
请给我一个 suitable 答案
private void ExportToWord(DataSet Collection)
{
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\endofdoc";
Microsoft.Office.Interop.Word._Application objWord;
Microsoft.Office.Interop.Word._Document objDoc;
objWord = new Microsoft.Office.Interop.Word.Application();
objWord.Visible = true;
objDoc = objWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
int i = 0;
int j = 0;
Microsoft.Office.Interop.Word.Table objTable;
Microsoft.Office.Interop.Word.Range wrdRng = objDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
string strText;
int tables = Collection.Tables.Count;
for (int k = 0; k < tables; k++)
{
int columns = Collection.Tables[k].Columns.Count;
int rows = Collection.Tables[k].Rows.Count;
string[] columnNames = Collection.Tables[k].Columns.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToArray();
Microsoft.Office.Interop.Word.Table objNewTable;
objNewTable = objDoc.Tables.Add(wrdRng, rows, columns, ref oMissing, ref oMissing);
objNewTable.Range.ParagraphFormat.SpaceAfter = 8;
objNewTable.Rows[1].Range.Font.Name = "Times New Roman";
objNewTable.Rows[1].Range.Font.Bold = 1;
objNewTable.Rows[1].Range.Font.Italic = 1;
objNewTable.Rows[1].Range.Font.Size = 9;
for (int l = 0; l < columnNames.Count(); l++)
{
objNewTable.Cell(1, l).Range.Text = columnNames[l];//"Item Name";
//objNewTable.Cell(1, 2).Range.Text = "Price";
}
try
{
// objTable.Borders.Shadow = true;
objNewTable.Borders.Shadow = true;
}
catch
{
}
}
}
通过上面的代码得到下图
private void word(DataSet Collection)
{
Word._Application objApp;
Word._Document objDoc;
try
{
object objMiss = System.Reflection.Missing.Value;
object objEndOfDocFlag = "\endofdoc"; /* \endofdoc is a predefined bookmark */
//Start Word and create a new document.
objApp = new Word.Application();
objApp.Visible = true;
objDoc = objApp.Documents.Add(ref objMiss, ref objMiss,
ref objMiss, ref objMiss);
int tables = Collection.Tables.Count;
for (int k = 0; k < tables; k++)
{
int columns = Collection.Tables[k].Columns.Count;
int rows = Collection.Tables[k].Rows.Count;
string[] columnNames = Collection.Tables[k].Columns.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToArray();
//Insert a paragraph at the end of the document.
Word.Paragraph objPara2; //define paragraph object
object oRng = objDoc.Bookmarks.get_Item(ref objEndOfDocFlag).Range; //go to end of the page
objPara2 = objDoc.Content.Paragraphs.Add(ref oRng); //add paragraph at end of document
objPara2.Range.Text = "Test Table Caption"; //add some text in paragraph
objPara2.Format.SpaceAfter = 10; //defind some style
objPara2.Range.InsertParagraphAfter(); //insert paragraph
objPara2.Range.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape;
//Insert a n x n table, (table with n row and n column)
Word.Table objTab1; //create table object
Word.Range objWordRng = objDoc.Bookmarks.get_Item(ref objEndOfDocFlag).Range; //go to end of document
objTab1 = objDoc.Tables.Add(objWordRng, rows+1, columns, ref objMiss, ref objMiss); //add table object in word document
objTab1.Range.ParagraphFormat.SpaceAfter = 6;
int iRow, iCols;
string strText;
for (int jk = 1; jk <= columnNames.Count()-1; jk++)
{
for (iCols = 0; iCols < columnNames.Count(); iCols++)
{
strText = columnNames[iCols];
objTab1.Cell(1, iCols+1).Range.Text = strText; //add some text to cell
}
objWordRng.InsertParagraphAfter();
int rowCol = 0;
for (iRow = 2; iRow <= rows + 1; iRow++)
{
int cols = 0;
for (iCols = 1; iCols <= columns; iCols++)
{
strText = Convert.ToString(Collection.Tables[k].Rows[rowCol][cols]);
objTab1.Cell(iRow, iCols).Range.Text = strText;
cols++;
//add some text to cell
}
rowCol++;
}
objTab1.Rows[1].Range.Font.Bold = 1; //make first row of table BOLD
// objTab1.Columns[1].Width = objApp.InchesToPoints(3); //increase first column width
}
//Add some text after table
objWordRng = objDoc.Bookmarks.get_Item(ref objEndOfDocFlag).Range;
objWordRng.InsertParagraphAfter(); //put enter in document
objWordRng.InsertAfter("THIS IS THE SIMPLE WORD DEMO : THANKS YOU.");
try
{
// objTable.Borders.Shadow = true;
objTab1.Borders.Shadow = true;
}
catch
{
}
}
object szPath = "test.docx"; //your file gets saved with name 'test.docx'
objDoc.SaveAs(ref szPath);
}
catch (Exception ex)
{
MessageBox.Show("Error occurred while executing code : " + ex.Message);
}
finally
{
//you can dispose object here
}
}