Tag: 互操作

从datagrigview导出选定的单元格到excel

任何人都可以告诉如何导出选定的单元格从datagridview到Excel? select应该是通过一个单元格单击事件,并单击button时将其导出到Excel文件。 谁能帮我吗..

Excel Range.Find变得越来越慢

我有一个像这样的列的文件: ķ ķ ķ SND P P SND ķ … 列的长度是例如20000.我使用以下C#代码沿此列移动: while (true) { // Find SND dest_cells = ex_cells.Find("SND", dest_cells, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlWhole, Excel.XlSearchOrder.xlByColumns, Excel.XlSearchDirection.xlNext, false, false, false); // END? if (dest_cells.Row < row) return false; row = dest_cells.Row; // Find K dest_cells = ex_cells.Find("K", dest_cells, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlWhole, Excel.XlSearchOrder.xlByColumns, Excel.XlSearchDirection.xlNext, false, false, false); // END? […]

Excel互操作workbook.SaveAs()删除原始格式?

如何在使用Microsoft.Office.Interop.Excel.Workbook.SaveAs(…)?时保留工作表的格式Microsoft.Office.Interop.Excel.Workbook.SaveAs(…)? 例如,我使用Excel 2010打开以前创build的工作簿,发现它看起来很漂亮:列标题中的粗体字体,漂亮的网格线,显示input单元格的高亮颜色等。 我切换到VS2012,并使用我写在下面的ExcelAppManager我开始打开具有美丽的格式的工作簿。 然后,我使用Interop库以编程方式将新的单元格值写入其中一个工作表。 然后使用SaveAs()保存工作表,如下面的ExcelAppManager所示。 然后我使用Microsoft Excel 2010打开工作表:我可以看到我在各个单元格中写入的值 – 这很好,但是工作正常 – 但是整个工作簿不再具有格式。 这是普通的香草格式,所有美丽的格式都消失了。 我将格式定义为格式化画家所能操作的格式:粗体,字体,alignment,网格线,缩进,宽度和高度等。 示例代码: using System; using System.Reflection; using System.Runtime.InteropServices; using Microsoft.Office.Interop.Excel; namespace ExcelStuff { public class ExcelAppManager { private Application _excelApp; private bool _isDefaultWorksheets = true; private Workbook _workBook; private Workbooks _workBooks; private Sheets _workSheets; public ExcelAppManager(string pathToExistingWorksheet) { _excelApp = new […]

使用Excel.interop从C#中的Excel工作表中select透视表中的列filter值

我有一个excel文件,其中包含近15张。 每个工作表都包含一个由另一个用户创build的数据透视表。 所有数据透视表都从一张名为“data”的表中获取数据。 我的C#控制台应用程序在特定的时间间隔更新“数据”表中的数据。 我的要求是我必须使用C#excel interop更新数据表后,在每张表中select数据透视表列标签filter中的当前和上个月值。 请帮助我。

为什么我必须投Excel.Cells但不Excel.End?

我从MSDN得到以下代码片段。 我很好奇:为什么我必须将rng.Cells Object转换为Excel.Range ,为什么我不必将rng.End Object转换为Excel.Range 。 由于离开Directcast给我的错误,虽然Option Strict On从Object到Excel.Range的隐式转换是不允许的。 所以我查了MSDN的Range.End属性 ,它说,返回types是一个Range对象,这就是为什么我不必将该types转换为Excel.Range 。 但看着Range.Cells属性我很困惑,因为它说, Range.Cells返回一个Excel.Range object 。 所以任何人都可以向我展示为什么我必须施放Range.Cells而不是Range.End ? Private Function GetDocPropRange() As Excel.Range Dim rng As Excel.Range = _ ThisApplication.Range("DocumentProperties") Dim rngStart As Excel.Range = _ DirectCast(rng.Cells(1, 1), Excel.Range) Dim rngEnd As Excel.Range = _ rng.End(Excel.XlDirection.xlDown).Offset(0, 1) Return ThisApplication.Range(rngStart, rngEnd) End Function

按要求退出Excel实例作为类成员

我试图创build一个类,我想用excel实例工作,我想要退出excel实例按要求(正如在这个答案中提到的。仍然能够正确debugging我分离垃圾收集器的方式如下: Imports Excel = Microsoft.Office.Interop.Excel Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim xlsInst As New ExcelInst GC.Collect() GC.WaitForPendingFinalizers() End Sub End Class Public Class ExcelInst Sub New() Dim myxlApp As New Excel.Application Dim myxlWb As Excel.Workbook '~~> Add a new Workbook myxlWb = myxlApp.Workbooks.Add '~~> Display Excel myxlApp.Visible […]

Excel互操作范围查找全部单元格内容

有什么办法设置这个Excel的标志(匹配整个单元格内容)的代码? 目前我正在使用以下,但它只给了我部分匹配 例如。 查找值是1520,find651520 或者只是在使用findnext方法的情况下呢? currentFind = insta.Find(line, Missing.Value, XlFindLookIn.xlValues, XlLookAt.xlPart, XlSearchOrder.xlByRows, XlSearchDirection.xlNext, false, Missing.Value, Missing.Value);

注册COM互操作性

我在C#中创build以下类库: [InterfaceType(ComInterfaceType.InterfaceIsDual)] //[Guid(<Generate GUID here>)] public interface _None1 { int retval { get; } } [ClassInterface(ClassInterfaceType.None)] //[Guid(<Generate GUID here>)] [ProgId("Lotr.Test")] public class None : _None1 { public int retval { get { return 1; } } } 然后使用“Register for COM Interop”和“Make Assembly COM-visible”选项进行编译。 当我尝试在我的机器上使用Excel 2007 VBA访问它时,工作正常。 但是,如果我将.dll和.tlb文件带到另一台机器上,然后使用regasm进行注册,那么注册会发生的很好,我可以通过tlb在Excel VBA中引用它,intellisense像钟表一样工作,但是执行,VBA运行时提供以下错误: “运行时错误:-2147024894(80070002)” “自动化错误:系统找不到指定的文件。”

c#添加一个图片从资源excel

我目前正在做的下面添加一个图像到我创build的Excel文件通过“互操作” private Excel.Workbook _xlWorkBook; _xlWorkSheet.Shapes.AddPicture(appPath + @"\ImageFile.png", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 5, 5, 60, 60); 如果可以的话,我有几个问题。 添加图片后如何访问图片 – 例如在图片上绘制边框。 为我的应用程序做以上的手段,我必须分发的图像文件,所以我想我会把它放在应用程序资源。 如何将资源中的图像添加到excel文件中? 再一次添加,我如何访问它来添加边框等? _xlWorkSheet.Shapes.AddPicture(Properties.Resources.ImageFile); //不要工作 非常感谢

将数据导出到Excel电子表格

我将在一个通用的工具包上编写基于数据库数据的excel文件。 我以前使用过几种方法: 1)创build一个CSV文件 Excel将打开它,并将数据格式化为每个值进入一个单元格,每行是一行。 缺点:文件扩展名不一定会被excel默认打开。 它似乎在非常大的数据源上“切断”。 从内存中,大约65000行,其余的文件被Excel忽略。 2)生成一个XML电子表格 http://msdn.microsoft.com/en-us/library/bb226687(v=office.11​​).aspx 缺点:当打开“正在尝试打开的文件**的格式与文件扩展名所指定的格式不同时,出现错误”。 它确实打开罚款,但它不能激发信心。 使写SQL到XML尴尬。 前段时间我简单地介绍了使用优秀的Interop方法。 而且我确定在尝试从没有安装excel / office的服务器运行代码时遇到了问题。 这几乎总是如此 。 通常,代码将通过网页或Silverlight WCF服务运行(如果这有所帮助)。 并通过电子邮件发送给用户,或者也可以select直接打开文件并保存。 包括标题/颜色/公式将是一个奖金 目前大多数情况下他们只是复制/粘贴数据。 但是对于大数据集来说,它很容易失败,或者真的很慢。 任何人都会给我最好的想法如何去做