У меня есть приложение C#, где я хочу реализовать логику для программы, которая откроет документ слова и переместится в определенное место на странице и создаст таблицу и поместит значения в что. Может ли кто-нибудь сказать мне, как это реализовать. Я использую Visual studio 2005Создание динамических таблиц в Word с помощью C# .NET
ответ
Посмотрите «Автоматизация слов».
Например, KB316384, который включает в себя:
Образец кода в этой статье показано, как выполнить следующие действия:
- Вставка абзацы текста и форматирования.
- Просмотр и изменение различных диапазонов в документе.
- Вставка таблиц, форматирование таблиц и заполнение таблиц данными.
- Добавить диаграмму.
Спасибо. Но я ищу решение, использующее .NET Reference вместо ссылки COM. Высказывал много. Но не смог найти. Может ли кто-нибудь? – 2008-11-12 12:34:32
Если вы не хотите использовать Word Automation, например. у вас не установлен Word на компьютере, на котором запущена ваша программа, вы должны посмотреть на Aspose.Words.
Единственная проблема в том, что это не бесплатно.
Word довольно счастливо откроет файл в формате HTML с расширением .Doc. Вы можете использовать все форматирование, используя внутреннюю таблицу стилей. Очень похожий вопрос пришел сюда:
Вот код, чтобы скопировать DataGridView к слову таблице:
Референцию Microsoft.Office.Interop.Word C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Tools Visual Studio для Office \ PIA \ Office12 \ Microsoft.Office.Interop.Word.dll
using word = Microsoft.Office.Interop.Word;
public static void ExportToWord(DataGridView dgv)
{
SendMessage("Opening Word");
word.ApplicationClass word = null;
word.Document doc = null;
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */
try
{
word = new word.ApplicationClass();
word.Visible = true;
doc = word.Documents.Add(ref oMissing, ref oMissing,ref oMissing, ref oMissing);
}
catch (Exception ex)
{
ErrorLog(ex);
}
finally
{
}
if (word != null && doc != null)
{
word.Table newTable;
word.Range wrdRng = doc.Bookmarks.get_Item(ref oEndOfDoc).Range;
newTable = doc.Tables.Add(wrdRng, 1, dgv.Columns.Count-1, ref oMissing, ref oMissing);
newTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
newTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
newTable.AllowAutoFit = true;
foreach (DataGridViewCell cell in dgv.Rows[0].Cells)
{
newTable.Cell(newTable.Rows.Count, cell.ColumnIndex).Range.Text = dgv.Columns[cell.ColumnIndex].Name;
}
newTable.Rows.Add();
foreach (DataGridViewRow row in dgv.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
newTable.Cell(newTable.Rows.Count, cell.ColumnIndex).Range.Text = cell.Value.ToString();
}
newTable.Rows.Add();
}
}
}
Вы можете попробовать мой метод экспорта данных в Word (* .docx), легко использовать и работать 100% с любым DataGr idView, просто добавьте Microsoft.Office.Interop.Word ссылку и скопируйте следующий код:
using Word = Microsoft.Office.Interop.Word;
public void Export_Data_To_Word(DataGridView DGV, string filename)
{
if (DGV.Rows.Count != 0)
{
int RowCount = DGV.Rows.Count;
int ColumnCount = DGV.Columns.Count;
Object[,] DataArray = new object[RowCount + 1, ColumnCount + 1];
//add rows
int r = 0;
for (int c = 0; c <= ColumnCount - 1; c++)
{
for (r = 0; r <= RowCount - 1; r++)
{
DataArray[r, c] = DGV.Rows[r].Cells[c].Value;
} //end row loop
} //end column loop
Word.Document oDoc = new Word.Document();
oDoc.Application.Visible = true;
//page orintation
oDoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape;
dynamic oRange = oDoc.Content.Application.Selection.Range;
string oTemp = "";
for (r = 0; r <= RowCount - 1; r++)
{
for (int c = 0; c <= ColumnCount - 1; c++)
{
oTemp = oTemp + DataArray[r, c] + "\t";
}
}
//table format
oRange.Text = oTemp;
object Separator = Word.WdTableFieldSeparator.wdSeparateByTabs;
object ApplyBorders = true;
object AutoFit = true;
object AutoFitBehavior = Word.WdAutoFitBehavior.wdAutoFitContent;
oRange.ConvertToTable(ref Separator, ref RowCount, ref ColumnCount,
Type.Missing, Type.Missing, ref ApplyBorders,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, ref AutoFit, ref AutoFitBehavior, Type.Missing);
oRange.Select();
oDoc.Application.Selection.Tables[1].Select();
oDoc.Application.Selection.Tables[1].Rows.AllowBreakAcrossPages = 0;
oDoc.Application.Selection.Tables[1].Rows.Alignment = 0;
oDoc.Application.Selection.Tables[1].Rows[1].Select();
oDoc.Application.Selection.InsertRowsAbove(1);
oDoc.Application.Selection.Tables[1].Rows[1].Select();
//header row style
oDoc.Application.Selection.Tables[1].Rows[1].Range.Bold = 1;
oDoc.Application.Selection.Tables[1].Rows[1].Range.Font.Name = "Tahoma";
oDoc.Application.Selection.Tables[1].Rows[1].Range.Font.Size = 14;
//add header row manually
for (int c = 0; c <= ColumnCount - 1; c++)
{
oDoc.Application.Selection.Tables[1].Cell(1, c + 1).Range.Text = DGV.Columns[c].HeaderText;
}
//table style
oDoc.Application.Selection.Tables[1].set_Style("Grid Table 4 - Accent 5");
oDoc.Application.Selection.Tables[1].Rows[1].Select();
oDoc.Application.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
//header text
foreach (Word.Section section in oDoc.Application.ActiveDocument.Sections)
{
Word.Range headerRange = section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
headerRange.Fields.Add(headerRange, Word.WdFieldType.wdFieldPage);
headerRange.Text = "your header text";
headerRange.Font.Size = 16;
headerRange.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
}
//save the file
oDoc.SaveAs2(filename);
//NASSIM LOUCHANI
}
}
private void button_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Word Documents (*.docx)|*.docx";
sfd.FileName = "export.docx";
if (sfd.ShowDialog() == DialogResult.OK)
{
Export_Data_To_Word(dataGridView1, sfd.FileName);
}
}
Спасибо.
- 1. Создание динамических таблиц
- 2. Создание таблиц MS Word из заголовков C
- 3. Создание таблиц в Word программно
- 4. Создание таблицы динамических таблиц Laravel
- 5. C# /. NET: создание динамических визуальных объектов на C#
- 6. Создание таблиц XML Word (Python)
- 7. Grails: Создание динамических таблиц и создание PDF
- 8. создание динамических документов Word для массовой рассылки
- 9. автоматизация Word в C# - Создание таблиц в Слове
- 10. Создание списка объектов из динамических таблиц
- 11. Перемещение таблиц в Word с помощью VBA
- 12. Создание документа Word с C#
- 13. Создание документа Word в C#
- 14. Автоматическое создание шаблона Word с помощью VBA
- 15. создание динамических переменных в C#
- 16. Создание документа Word из .net-приложения
- 17. Создание динамических запросов в C#
- 18. Создание динамических потоков в C
- 19. создание таблиц в MS Word с использованием VBA
- 20. Javascript Неверный tr информация создание динамических таблиц
- 21. T-SQL Создание динамических таблиц и заполнение
- 22. Создание контекстного меню Bootstrap для динамических таблиц
- 23. Создание таблиц с библиотекой SQLite-net
- 24. Ms-Word Маркировка с помощью проблемы оптимизации C# .net
- 25. Создание XML-файла с помощью динамических субэлементов уровня C#
- 26. Создание динамических тестов с помощью PHPUnit
- 27. Создание интерактивных динамических ссылок с помощью typeahead.js
- 28. Создание динамических динамиков с помощью SignalR
- 29. Создание динамических объектов с помощью Javascript
- 30. Создание динамических шаблонов с помощью GAS
(ваш комментарий ко мне) Ненавижу говорить вам это, но Word не управляемое приложение. Поэтому для использования самого приложения Word вам придется использовать COM-api ... альтернативой является использование стороннего инструмента для непосредственного написания текстовых файлов (проще с .docx, чем .doc). – 2008-11-12 13:07:27