标签: office-interop

如何使用Microsoft.Office.Interop打开文件时禁用弹出窗口

如只读确认,其他警报.这些弹出窗口怎么办?还是忽略它们?

c# ms-office office-interop office-pia

19
推荐指数
2
解决办法
3万
查看次数

如何在创建Excel文件时正确设置列宽?(列属性)

我正在使用标准库

using Excel = Microsoft.Office.Interop.Excel;
Run Code Online (Sandbox Code Playgroud)

这就是我创建Excel的方式,只是代码的一小部分:

//Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
Excel._Application xlApp = new Excel.Application();

xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

//add data 
xlWorkSheet.Cells[1, 1] = "";
xlWorkSheet.Cells[1, 2] = "Student1";
xlWorkSheet.Cells[1, 3] = "Student2";
xlWorkSheet.Cells[1, 4] = "Student3";
Run Code Online (Sandbox Code Playgroud)

问题是,有时单元格的大小可能小于文本大小.我试过这个:

Excel.Range chartRange;
chartRange.EntireColumn.ColumnWidth = 31.43;
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我需要分别为每个列设置此属性.我怎么能这样做?

c# excel office-interop

19
推荐指数
3
解决办法
8万
查看次数

无法获得Microsoft.Office.Interop引用的工作

我有一个C#winforms应用程序,我只是想打开一个Excel工作表.当我尝试添加对Microsoft.Office.Interop的引用时,"Office"部分为红色并显示"无法解析符号'Office'".

当我尝试构建时,错误是:

The type or namespace name 'Office' does not exist in the namespace 'Microsoft' 
    (are you missing an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

我安装了Office 2012,我想我安装了主互操作程序集......但我并不乐观.

我知道这应该是那么容易,但我一直在寻找答案,差不多一个小时,只是无法搞清楚.提前致谢!

c# office-interop winforms

18
推荐指数
3
解决办法
8万
查看次数

将List中的值导出为ex​​cel

嗨,我有一个列表容器,其中包含值列表.我希望将列表值直接导出到Excel.有没有办法直接做到这一点?

c# excel ms-office office-interop excel-interop

17
推荐指数
5
解决办法
9万
查看次数

如何从模板以编程方式创建word文档

我试图在microsoft office Word中创建大约600个报告.文档中填充了数据库中的数据和本地驱动器上的图像.我已经想到,我可以在visual studio 2010中创建一个Word模板项目,并对模板进行编程,这样当您输入单个值(id-number)时,它会自动填写整个文档.

我很有信心这是可能的.唯一的问题是.如何遍历数据库中的所有条目,根据模板打开新文档并设置id-value?

for(int i = 0; i < idnumbers.Count(); i++)
{
     Word.Application app = new Word.Application();
     Word.Document doc = app.Documents.Add(@"C:\..\WordGenerator\bin\Debug\WordTemplate.dotx");
     //input the id-number below: HOW??

     doc.SaveAs(FileName: @"c:\temp\test.docx"); 
}
Run Code Online (Sandbox Code Playgroud)

应用程序应该只运行一次,生成报告,而且不一定要快.它必须易于开发.

这里的问题是,似乎在Word项目之外无法访问DocumentBase对象.替代Microsoft.Office.Interop.Word.Document没有像SelectContentControlsByTitle这样的功能,它允许我查找和设置我的ContentControls.而这正是我需要做的......

这就是我的代码现在将文本插入我的字段:Word.Application app = new Word.Application();

        Word.Document doc = app.Documents.Add(@"C:\..\test.dotx");

        foreach (Word.ContentControl cc in doc.SelectContentControlsByTitle("MyCCTitle"))
        {
            cc.Range.Text += "1234";
        }

        doc.SaveAs(FileName: @"c:\temp\test.docx");
Run Code Online (Sandbox Code Playgroud)

然后我的模板上的事件处理程序在BeforeSave上根据MyCCTitle标题对象中的文本填写文档.

c# ms-word office-interop

17
推荐指数
4
解决办法
6万
查看次数

无法转换COM对象 - Microsoft Outlook和C#

我已编写此代码以查看Outlook邮箱中的未读项目,以下是代码:

 Microsoft.Office.Interop.Outlook.Application app;
 Microsoft.Office.Interop.Outlook.Items items; 
 Microsoft.Office.Interop.Outlook.NameSpace ns; 
 Microsoft.Office.Interop.Outlook.MAPIFolder inbox;

 Microsoft.Office.Interop.Outlook.Application application = new Microsoft.Office.Interop.Outlook.Application();
        app = application;
        ns =  application.Session;
        inbox = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
        items = inbox.Items;
        foreach (Microsoft.Office.Interop.Outlook.MailItem mail in items)
        {
            if (mail.UnRead == true)
            {
                MessageBox.Show(mail.Subject.ToString());
            }
        }
Run Code Online (Sandbox Code Playgroud)

但在foreach循环中我收到此错误:

"无法将类型为'System .__ ComObject'的COM对象转换为接口类型'Microsoft.Office.Interop.Outlook.MailItem'.此操作失败,因为QueryInterface调用COM组件上的接口与IID'{00063034-0000- 0000-C000-000000000046}由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)).

你能帮我解决一下这个错误吗?

c# outlook office-interop outlook-2003 c#-2.0

16
推荐指数
3
解决办法
3万
查看次数

逐行阅读word文档


我正在尝试使用C#读取word文档.我能够获取所有文本,但我希望能够逐行读取并存储在列表中并绑定到gridview.目前,我的代码只返回一个包含所有文本的项目列表(不是根据需要逐行).我正在使用Microsoft.Office.Interop.Word库来读取文件.以下是我的代码:

    Application word = new Application();
    Document doc = new Document();

    object fileName = path;
    // Define an object to pass to the API for missing parameters
    object missing = System.Type.Missing;
    doc = word.Documents.Open(ref fileName,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing);

    String read = string.Empty;
    List<string> data = new List<string>(); …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net ms-word office-interop

16
推荐指数
3
解决办法
7万
查看次数

使用Office Interop将单元格写入Excel的最快方法?

我正在编写一个函数,使用VB .NET中的Office Interop将数据导出到Excel.我目前正在使用Excel工作表的Cells()方法直接编写单元格:

worksheet.Cells(rowIndex, colIndex) = data(rowIndex)(colIndex)
Run Code Online (Sandbox Code Playgroud)

这需要很长时间才能获得大量数据.是否有更快的方法可以立即将大量数据写入Excel?用范围做事会更快吗?

vb.net com excel performance office-interop

14
推荐指数
3
解决办法
3万
查看次数

支持Office Automation的不同Office版本

我们创建了一个使用Office 2007(Excel 2007)从Excel工作表读取数据的应用程序.然而.我注意到,当我想在安装了Office 2003的系统上部署应用程序时,它会崩溃,因为此版本的办公室需要引用其他PIA(和其他dll).

我是否需要编译不同版本的应用程序才能支持不同版本的Office或者是否有更优雅的解决方案来解决此问题?

我使用Visual Studio 2010(C#)和.Net 4.0平台.

.net c# office-interop

14
推荐指数
1
解决办法
5650
查看次数

使用Microsoft.Office.Interop.Excel从excel 2010读取数据

我无法在Excel中读取数据.这是我正在使用的代码:

using Excel = Microsoft.Office.Interop.Excel;

Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"Book1.xlsx", 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
Excel._Worksheet xlWorksheet = (Excel._Worksheet)xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;

int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;

for (int i = 1; i <= rowCount; i++)
{
    for (int j = 1; j <= colCount; j++)
    {
        MessageBox.Show(xlWorksheet.Cells[i,j].ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到一个消息框,说明了一些System.__ComObject值而不是值.
我怎样才能解决这个问题?

.net c# excel office-interop

14
推荐指数
2
解决办法
6万
查看次数