Tag: excel interop

Excel参考C#代码中的问题

我有一个在Excel中使用WORKDAY()函数的电子表格(我相信它存在于分析工具库/软件包/无论你在Excel中调用它)。 当我手动打开这个电子表格,并调用这个函数,它performance很好。 我有一个引用了WORKDAY()函数的单元格的macros: Dim startDate as Date startDate = Cells(1,1) 当我手动打开电子表格后运行macros时,此代码执行正常。 问题是当我尝试打开电子表格并从我的C#代码运行macros。 它会尝试获取startDate的值时失败。 当我看着那个单元格时,我看到一个#VALUE! 参考错误。 这似乎是不加载正确的引用,当我从我的C#代码打开电子表格。 有谁知道如何解决这个问题?

安装/删除2013testing版后,断开了Excel Interop COM程序集

我最近安装了Microsoft Office 2013testing版,同时安装了2007版。 当我在Visual Studio 2008下打开一个基于COM的Excel互操作应用程序时,我发现了一些我以前没有的警告。 我试图开始编译应用程序,它仍然工作,但是当我尝试使用使用Excel互操作的function时,我收到一个错误。 之后,我立即卸载Office 2013,但错误仍然存​​在。 我在C:\ Windows \ assembly文件夹中搞砸了,仍然无法解决它。 之后,我继续卸载/重新安装Office 2007.仍然没有运气。 我再次卸载Office 2007,删除所有有关interop(包括策略的)程序集,重新安装Office 2007.仍然没有。 我尝试安装PrimaryInteropAssembly。 也没什么。 我没有select…我能做什么? 应用程序仍然可以编译,并仍然可以在其他机器上工作。 这真的只是我的机器无法运行了。 这可能不是主题,我不确定哪种堆栈交换将适合这种types的东西,但是由于它与编程相关,而不是真正的代码,所以我在这里给了它一个镜头。 我认为在这个领域胜任的人比SF更多地居住于SO VS中的警告 无法确定COM参考“Microsoft.Office.Interop.Excel”的依赖关系。 Erreur du du charge de labibliothèque/ DLL du type。 (Exception de HRESULT:0x80029C4A(TYPE_E_CANTLOADLIBRARY)) (法语部分翻译:“加载库/ DLLtypes错误”) 在开发机器上运行应用程序时出错

接口和扩展ApplicationClass

我正在尝试在F#中编写一个模块,通过提取行,列等,以及types转换等,使得使用Excel更容易。 我想要做的第一件事就是扩展各种类/types来实现IDisposable接口。 我试图写下如下的东西 type Excel.ApplicationClass with interface IDisposable with member this.Dispose() = this.excel.Quit() Marshal.ReleaseComObject(this.excel) |> ignore 我没有意识到的是,我会得到以下错误“所有实现的接口应该声明的types的初始声明”。 我的问题如下:由于我不允许使用接口来扩展types,我还能做什么?

用多个线程写入excel文件

我正在尝试写入数据表到excel有大record.I试图实现使用分而治之,每个线程被分配写入各自excelworkbook.but但我越来越文件是只读,单击确定以覆盖文件。 class Program { int processorCount = 2; static volatile bool processing = true; DataTable employeeTable = new DataTable("Employee"); ManualResetEvent mre = new ManualResetEvent(false); AutoResetEvent ar = new AutoResetEvent(true); int record_count; static void Main(string[] args) { Program p = new Program(); //Create an Emplyee DataTable p.employeeTable.Columns.Add("Employee ID"); p.employeeTable.Columns.Add("Employee Name"); for (int i = 0; i […]

如何将文本添加到C#Excel Interop中的现有形状(文本框)

我有一个excel包含文本框/形状,我将填写具体的数据。 我使用下面的代码来识别每个形状: //using Excel = Microsoft.Office.Interop.Excel; Excel.Worksheet xlWorkSheet foreach(Excel.Shape shp in xlworksheet.Shapes) { //code to add text to shape goes here…. } 我也试过使用: shp.TextFrame2.TextRange.Characters.Text = "Test"; 和 shp.TextFrame.Characters(Type.Missing, Type.Missing).Text = "Test"; 但给出了一个错误状态The specified value is out of range和Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)) Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)) ,分别。 将文本添加到现有的文本框应该是什么正确的方法?

我怎样才能在C#中的Excel范围添加底部边框?

我需要在电子表格的某些行上添加一个底部边框(简单的实线)。 我有我需要定义的范围,但尝试添加边界代码失败了,从注释掉的尝试可以看出: private ApplicationClass _xlApp; private Workbook _xlBook; private Sheets _xlSheets; private Worksheet _xlSheet; . . . private void AddBottomBorder(int rowToBottomBorderize) { var rangeToBottomBorderize = (Range)_xlSheet.Cells[rowToBottomBorderize, TOTALS_COL]; //rangeToBottomBorderize.Borders[_xlApp.XlBordersIndex.xlEdgeBottom] = //rangeToBottomBorderize.Borders[XlBordersIndex.xlEdgeBottom] = 1d; //rangeToBottomBorderize.Borders[_xlSheet. //_xlSheet.Cells[rowToBottomBorderize, TOTALS_COL].Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = 1d; // someRange.Borders.Item[XlBordersIndex.xlEdgeBottom)] = …what now? } 我需要哪些对象的属性或方法进行分配或调用,以及如何执行?

如何使用Interop C#隐藏Excel列和行

我做了一个简单的库存界面,将从访问中获取数据并显示在我的界面的datagrid视图中,然后通过单击button将信息发送到Excel。 这部分工作需要,但我想删除信息发送后未使用的列和行。 我目前正在使用VS 2015.我不知道要添加什么来实现这一点。 //send to excel private void btnExport_Click(object sender, EventArgs e) { ActiveControl = txtSerial; // creating Excel Application Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); // creating new WorkBook within Excel application Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); // creating new Excelsheet in workbook Microsoft.Office.Interop.Excel._Worksheet worksheet = null; // see the excel sheet behind the program […]

它是如何(是否?)可能防止数据的数据透视表导致“#DIV / 0!”等数据缺失?

我正在生成一个数据透视表,其中包含项目的每月数据(销售了多less,销售了多less,以及相关的统计数据)。 但在某些情况下,一个或几个月内没有特定项目的销售。 在这种情况下,不存在包含“0”值的logging,该logging根本不存在用于不存在的销售。 当显示这样的项目的数据时,不存在的数据造成严重破坏。 下面的屏幕截图显示了当一个物品有两个月的数据时(APPLES,GALA 5#),以及当没有数据时(APPLES,GALA 5#): 正如你所看到的,当数据是PivotTablized的,而不是在“Total Packages”和“Total Purchases”中放置一个“0”时,它将这些单元格留空并插入一个“#DIV / 0! 在“平均价格总和”单元格中 – 然后是“。” 在“总计%”单元格中。 这是没有帮助或取悦的眼睛。 我希望在这些单元格或零点中有一系列破折号。 一个解决方法是为源数据中的每个当前不存在的数据创build一行,但这似乎是不必要的,而且极其糟糕 – 我将不得不确定哪些项目“丢失”了几个月,然后向它们提供0值。 这真的是我需要做的吗? 请说不是这样! UPDATE 提供的答案让我去试验一下通过更改数据透视表格式选项的格式vals会发生什么。 有了这个数据开始: …我为err valsinput了一个问号,为空单元input了一个破折号: 这导致数据看起来像这样: 更好,但还不完全是我想要的。 既然这样做更好,至less我会用一种程序化的方式来完成同样的事情。 我不期待看到“?” 遵循一些“良好”的价值观,虽然… 所以我可能需要的是“为空单元格,显示一个短划线”(它转换为0为int和$ 0为十进制)的编程等价物。

根据创build时间/反转excel表格,以相反的顺序对Excel表单进行sorting

我正在使用Microsoft Interop的Excel来自动化的Excel工作簿,其中有很多工作表(比如说40)已经创build在几秒钟的差距,甚至更less,现在我必须以相反的顺序,即首先创build的工作表应该先打开(现在是最后一个)总之,我必须按照相反的顺序或创build时间sortingExcel表 在这个问题上的任何帮助 日Thnx

C#将Excel工作表保存为html并阅读此HTML

在我的项目中,我需要将用户自定义的excel保存到.mht文件,并立即将文件重新加载到内存中,代码如下 var app = new Excel.Application(); var wsCurrent = app.ActiveWorkbook.ActiveSheet; object format = Excel.XlFileFormat.xlWebArchive; var codename = application.ActiveSheet.CodeName; wsCurrent.SaveAs(outputFile, format, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 然而,我发现由于excel的自然性,我们保存文件,它将locking进程,直到excel应用程序closures。 换句话说,我不能加载保存的.mht文件,除非我closures我不想要的excel,任何一个更好的主意这样做,请给我一个线索解决scheme,非常感谢提前,欢呼声,