In the below sample I copy a cell Range in a Excel sheet into Word document using Interop
Refer the Excel and Word Office Interop DLLs
Browse and provide the DLL locations. For example:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Excel.dll
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Word.dll
Add using directives
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
Declare a variable in your class
object oMissing = System.Reflection.Missing.Value;
In your method create a Excel Application to copy content and a Word application to paste into
Excel._Application xlApp = new Excel.Application();
xlApp.DisplayAlerts = false;
xlApp.Visible = false;
Word._Application wdApp = new Word.Application();
wdApp.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;
wdApp.Visible = false;
Word.Document document = null;
try
{
Excel.Workbook workbook = xlApp.Workbooks.Open(filePath);
Excel.Worksheet worksheet = workbook.Sheets[8];
document = wdApp.Documents.Add();
worksheet.Range["A2", "I120"].Copy();
document.Range().PasteSpecial();
document.SaveAs2(@"C:\temp\1\Mydoc.docx", Word.WdSaveFormat.wdFormatDocumentDefault, 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);
workbook.Close(false, oMissing, oMissing);
}
catch (Exception ex)
{
//TODO - log exception
}
finally
{
if (xlApp != null)
xlApp.Quit();
if (document != null)
((Microsoft.Office.Interop.Word._Document)document).Close(oMissing, oMissing, oMissing);
if (wdApp != null)
wdApp.Quit();
}
In the above code segment if you know the name of the workbook sheet instead of using he code line:
Excel.Worksheet worksheet = workbook.Sheets[8]; you could use a variable to hold the sheetName and update the code line as below:
Excel.Worksheet worksheet = workbook.Sheets[sheetName] as Excel.Worksheet;
Refer the Excel and Word Office Interop DLLs
Browse and provide the DLL locations. For example:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Excel.dll
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Word.dll
Add using directives
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
Declare a variable in your class
object oMissing = System.Reflection.Missing.Value;
In your method create a Excel Application to copy content and a Word application to paste into
Excel._Application xlApp = new Excel.Application();
xlApp.DisplayAlerts = false;
xlApp.Visible = false;
Word._Application wdApp = new Word.Application();
wdApp.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;
wdApp.Visible = false;
Word.Document document = null;
try
{
Excel.Workbook workbook = xlApp.Workbooks.Open(filePath);
Excel.Worksheet worksheet = workbook.Sheets[8];
document = wdApp.Documents.Add();
worksheet.Range["A2", "I120"].Copy();
document.Range().PasteSpecial();
document.SaveAs2(@"C:\temp\1\Mydoc.docx", Word.WdSaveFormat.wdFormatDocumentDefault, 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);
workbook.Close(false, oMissing, oMissing);
}
catch (Exception ex)
{
//TODO - log exception
}
finally
{
if (xlApp != null)
xlApp.Quit();
if (document != null)
((Microsoft.Office.Interop.Word._Document)document).Close(oMissing, oMissing, oMissing);
if (wdApp != null)
wdApp.Quit();
}
In the above code segment if you know the name of the workbook sheet instead of using he code line:
Excel.Worksheet worksheet = workbook.Sheets[8]; you could use a variable to hold the sheetName and update the code line as below:
Excel.Worksheet worksheet = workbook.Sheets[sheetName] as Excel.Worksheet;
No comments:
Post a Comment