Tag: .net

.NET通过COM调用的.NET自动化服务器的生命周期

就像这个主题所说的,我写了一个C#类,比如Test,然后把它编译成一个DLL,然后把它作为一个COM自动化服务器暴露给Excel。 现在,您可以直接或通过VBA函数在Excel公式中调用该类的方法,而这些VBA函数本身将其称为底层函数。 在第二种情况下发生的事情是相对透明的(你写的代码!),而在第一种情况下,我假设一个testing实例是透明实例化,然后使用(它必须自公开的方法不是 – 从我读的 – 不能是静态的),但确切的时间和方式是不清楚的。 因此,我的问题是:在此设置中调用的自动化服务器的精确生命周期是什么? 一个附属的问题是,是否有一种方法可以直接调用公式和通过VBA调用使用一个单一的单例实例? 我想我已经知道如何让所有VBA程序使用单个Test实例,但是即使在公式中直接调用Test方法时也会创build第二个。 最后,如果这个Test类在课堂上拥有资源(即静态资源),何时以及如何处理它们呢? 同样,这也引发了.Net / COM Interop创build和销毁testing类的确切时间的问题。 精确度:服务是一个DLL,而不是一个应用程序,Excel应该是唯一使用它的东西,尽pipe可能有多个电子表格副本打开。 这是Excel 2007。

System.Runtime.InteropServices.COMException(0x800706BA):RPC服务器不可用。 (从HRESULTexception:0x800706BA)

这个例外 System.Runtime.InteropServices.COMException (0x800706BA): The RPC server is unavailable. (Exception from HRESULT: 0x800706BA) 当我在任何机器上运行它时收到我的Windows服务,但是当我在testing应用程序中testing它时,不会引发exception。 在我的代码中,我正在做的是将两个.DAT文件转换成.xls文件。 当我通过services.msc启动服务并运行服务时,它运行良好,但是在更新某些行之后,它会抛出exception,然后什么都不会发生。 我有两个独立的function,分别完成这项工作。 示例代码是: public void SaveData_component(string filename) { try { string filepath = System.Configuration.ConfigurationSettings.AppSettings["filepath"].ToString() + filename; filepath_first = filepath; object missing = Missing.Value; //string getExtension = Path.GetExtension(filepath); string getFilename = Path.GetFileNameWithoutExtension(filepath) + "New"; string filepathNew = System.Configuration.ConfigurationSettings.AppSettings["filepath"].ToString() + getFilename + ".xls"; […]

将Excel文件合并为一个

我有几百个Excel文件,每个文件在第一张纸上都有一些数据。 我被要求在C#中编写一个控制台应用程序,它将所有的Excel文件合并成一个文档,同时保留格式。 合并文件是一个工作簿,其中包含合并到文档中的每个文件的工作表。 不幸的是,Excel文件是二进制而不是XML格式,所以我不能执行XSL转换。 是否有免费的库或示例代码演示了如何将来自多个Excel文档的工作表合并到单个文件中?

导出Datagridviewlogging到Excel

嘿,朋友,我需要将WinForm的datagridview的logging导出到MSExcel。 我想这样做,而不使用任何DLL即与C#的属性中的buid。 那么有没有解决我的问题的好方法?

如何使用Excel.Range.set_Value()指定单个单元格的格式

当我把整个表格写入一个excel工作表时,我知道要一次处理整个范围,而不是写入单个单元格。 然而,有没有办法指定格式,因为我正在填充我要导出到Excel的数组? 以下是我现在所做的: object MissingValue = System.Reflection.Missing.Value; Excel.Application excel = new Excel.Application(); int rows = 5; int cols = 5; int someVal; Excel.Worksheet sheet = (Excel.Worksheet)excel.Workbooks.Add(MissingValue).Sheets[1]; Excel.Range range = sheet.Range("A1", sheet.Cells(rows,cols)); object[,] rangeData = new object[rows,cols]; for(int r = 0; r < rows; r++) { for(int c = 0; c < cols; c++) { someVal […]

Excel的ExcelDNA C#/尝试复制彭博BDH()的行为(在networking请求后写入数组)

我想复制彭博BDH的行为。 BDH发出Web请求并写入数组(但不返回数组样式)。 在此Web请求期间,该函数返回“#N / A请求”。 当Web请求完成时,BDH()函数将数组结果写入工作表。 例如,在ExcelDNA中,我成功地在工作表中写入了一个线程。 结果如果你在DNA文件中使用下面的代码,结果如下 = WriteArray(2; 2) 将会 第1行> #N/A Requesting Data (0,1) 第2行> (1,0) (1,1) 最后一个问题是用值replace#N/A Requesting Data并复制公式。 当您取消注释//xlActiveCellType.InvokeMember(“FormF1R1C1Local”)时,您接近结果但您没有正确的行为 文件.dna <DnaLibrary Language="CS" RuntimeVersion="v4.0"> <![CDATA[ using System; using System.Collections.Generic; using System.Reflection; using System.Runtime.InteropServices; using System.Threading; using ExcelDna.Integration; public static class WriteForXL { public static object[,] MakeArray(int rows, int columns) { if […]

.NET – 数据绑定上的Excel ListObject自动调整

我正在开发使用Visual Studio Tools for Office(2008)的Excel 2007加载项。 我有一个工作表上有几个ListObjects,它们在启动时绑定到数据表。 当他们绑定,他们自动大小正确。 问题出现时,他们重新约束。 我在function区栏上有一个自定义button,可以返回到数据库,并根据用户input的一些标准检索不同的信息。 这个新数据返回并重新绑定到ListObjects – 但是,这次他们没有resize,我得到一个exception: ListObject不能被绑定,因为它不能resize以适应数据。 ListObject无法添加新行。 这可能是由于无法将对象移动到列表对象的下方。 内部exception:“范围类的插入方法失败” 原因:Microsoft.Office.Tools.Excel.FailureReason.CouldNotResizeListObject 我无法在Google或MSDN上find有关此错误的任何有意义的内容。 我一直试图弄清楚这一点,但无济于事。 基本代码结构: //at startup DataTable tbl = //get from database listObj1.SetDataBinding(tbl); DataTable tbl2 = //get from database listObj2.SetDataBinding(tbl2); //in buttonClick event handler DataTable tbl = //get different info from database //have tried with and without unbinding […]

Jet引擎 – 255个字符截断

我需要将Excel电子表格导入到我的程序中,并具有以下代码: string connectionString = String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;IMEX=1;HDR=NO;""", MyExcelFile.xls); command.CommandText = "SELECT * FROM [Sheet1$]"; (注意,上面的代码不是真正的代码,但应该让你看看我在做什么) 我正在获取导入的文件,唯一的问题是Excel表中超过255个字符被截断的任何列。 有没有办法解决这个问题呢? 我在某处读到,如果你确定前面8行的列中有一长串文本,那么它将被视为一个备忘录字段,因此不会被截断,但似乎不起作用。 有任何想法吗? 格雷姆

VB.NET Excel程序完成后,EXCEL.EXE浮动

我正在编写一个程序,循环遍历Excel工作簿中的所有工作表,并将每个工作表保存为自己的工作簿。 事实certificate,比我预期的有点棘手,因为Sheet.Copy方法创build一个奇怪的对象(请参阅这里的MSDN讨论,我认为是相关的: http : //msdn.microsoft.com/en-us/library /ms178779.aspx )。 无论如何,我发现另一个堆栈溢出的post ,让我到我所在的地方,这基本上是完整的,除了一个挂在程序完成后留下的EXCEL.EXE过程之外(检查更新的另一个问题,但我认为他们是相关的)。 这是我的代码: Imports System.Data Imports System.IO Imports Microsoft.Office.Interop Imports Office = Microsoft.Office.Core Imports xlNS = Microsoft.Office.Interop.Excel Imports System.Runtime.InteropServices Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Get information from text boxes Dim InputLocation As String Dim OutputLocation As String InputLocation = […]

如何在MS Excel单元格中使用C#添加数字validation

我的目标是限制用户只能在MS Excel单元格中input1到100之间的值。 我以编程方式生成Excel文件,但是当我添加上面的validationexception是Exception from HRESULT: 0x800A03ECexception引发Exception from HRESULT: 0x800A03EC 我写的代码如下: int[] arr = {1,100}; ExcelApp.get_Range(col1, col2).Cells.Validation.Add(Microsoft.Office.Interop.Excel.XlDVType.xlValidateList, Microsoft.Office.Interop.Excel.XlDVAlertStyle.xlValidAlertInformation, Microsoft.Office.Interop.Excel.XlFormatConditionOperator.xlBetween, arr, Type.Missing); 在上面的代码中, ExcelApp是Microsoft.Office.Interop.Excel.ApplicationClass一个对象 任何帮助真的很感激。