Tag: excel interop

不能将types“对象”隐式转换为“Microsoft.Office.Interop.Excel.Worksheet”。 存在明确的转换(您是否缺less演员?)

在这里我打开excel并写入excel表单。 我正在改变我的Windows应用程序到ASP网站,看到这个错误。 我已经添加了所有的参考和库。 不知道我在这里错过了什么。 获得如下所述的错误。 请帮帮我。 Excel.Application excel = new Excel.Application(); excel.Visible = false; // to hide the processing Excel.Workbook wb = excel.Workbooks.Add(); Excel.Worksheet sh = wb.Sheets.Add(); // Error at wb sh.Name = "Links"; for (int i = 1; i < list.Count; i++) { sh.Cells[i.ToString(), "A"].Value2 = list[i]; //Error at .Value2 }

在多个工作表中冻结窗格C#

我正在MS Excel 2013中生成报告,其中工作簿中的所有工作表都应该在第6列和第1行有冻结窗格。我已经在Google上search,但找不到冻结窗格的任何解决scheme,工作簿必须是活动的。 我尝试了很多东西,但没有成功。 如果有人能帮助我,我将不胜感激。 Excel.Application excel = new Excel.Application(); Excel.Workbook workbook = excel.Workbooks.Open("filelocation"); foreach (Excel.Worksheet ws in workbook.Worksheets) { ws.Application.ActiveWindow.SplitColumn = 6; ws.Application.ActiveWindow.SplitRow = 1; ws.Application.ActiveWindow.FreezePanes = true; } excel.Visible = true;

如何查找在Excel工作表上select哪些单元格?

我需要能够使用C#和Excel互操作来确定在工作簿/工作表中select哪些单元格。 如果在Excel中定义了这样的东西,那将会很好: Excel.Range Worksheet.GetSelectedCells(); 但是我没有在任何文档中find。 我怎样才能做到这一点? TIA。

为什么要杀死Excel进程是一件坏事?

我已经看到了很多关于如何确保Excel实际上退出的文章和问题,而且这个过程并没有维持下去。 以下是描述问题的知识库文章以及Microsoft推荐的解决scheme。 主要有: 'close files 'Quit Excel xlApp.quit() 'Release and collect garbage System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlApp) GC.Collect() GC.WaitForPendingFinalizers() 许多人不build议杀死这个过程; 请参阅如何正确清理Excel互操作对象和了解.net中的垃圾收集 另一方面,很多人不推荐使用GC.Collect。 看看使用GC.Collect()有什么错误? 在我的经验中,杀死这个过程是确保Excel不见了的最快最容易的方法。 我的代码只杀死它启动的确切过程,没有其他的。 我确保closures所有打开的工作簿,退出应用程序并释放xlApp对象。 最后,我检查过程是否还活着,如果是的话就杀了它。 <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _ Private Shared Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, _ ByRef lpdwProcessId As Integer) As Integer End Function Sub testKill() 'start the application Dim xlApp As Object = CreateObject("Excel.Application") 'do some […]

复制格式从一行到另一个使用c#

这个问题与这里提到的问题非常相似。 但给出的答案build议复制格式与数据。 我有一个使用SSIS生成的Excel表格(.xlsx)。 现在我已经在第一行中设置了格式,我想将其复制到工作表中已经填充的所有行中。 我怎样才能使用C#? 我正在使用Excel互操作。

如何访问C#中已经打开的Excel文件?

我有一个Excel工作簿通过在Windows资源pipe理器中双击打开,但无法在代码中访问它 Excel.Application xlApp = (Application)Marshal.GetActiveObject("Excel.Application"); Excel.Workbooks xlBooks = xlApp.Workbooks; xlBooks.Count等于0,为什么它不是引用我打开的工作簿? 编辑 以下是各种情况和发生的情况: 情况1:如果文件尚未打开 代码打开工作簿,我很高兴。 scheme2:如果文件最初是从代码打开的,我closures并重新打开该应用程序 代码引用文件就好了xlBooks.Count等于1,我很高兴。 场景3 :如果文件最初不是从代码打开的,而是通过在浏览器中双击它 代码打开文件的另一个实例xlBooks.Count等于0, 我很愤怒! 这是现在的整个代码 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using Microsoft.Office.Interop.Excel; public class ExcelService : IExcelService { const string _filePath = @"C:\Somewhere"; const string _fileName = @"TestFile.xlsb"; string _fileNameAndPath = Path.Combine(_filePath, _fileName); Application […]

我们无法在.NET 4.0中的generics对象中使用Interop对象吗?

我正在VS 2010中工作,并将应用程序升级到.NET 4.应用程序是以Excel为基础构build的,我们希望利用.NET的一些改进来使用Excel。 但是我遇到了一个奇怪的错误,似乎是由通用字典中使用Excel Interop对象造成的。 这是生成的错误: C:\MyApp\TheAssembly\MyClass.cs(823,57): error CS1769: Type 'MyApp\OtherAssemply.IMyController.SheetReports' from assembly 'c:\MyApp\OtherAssemply.\bin\Debug\OtherAssembly.dll' cannot be used across assembly boundaries because it has a generic type parameter that is an embedded interop type. 这是有问题的实际属性: Dictionary<Excel.Worksheet, IReportSheet> SheetReports { get;} 我们无法在通用对象中使用Interop对象吗? 如果是这样,这是.NET 4.0中的一个严重的限制。 我试着将Embed Interop属性设置为false,但是这似乎没有改变任何东西。 请让我知道这是否有任何反应。 干杯! 埃里克

Excel工作簿input奇怪的错误

对于当前的代码: String currentPath = Directory.GetCurrentDirectory(); OpenFileDialog op = new OpenFileDialog(); op.InitialDirectory = currentPath; if (op.ShowDialog() == DialogResult.OK) currentPath = op.FileName; else { toolStripStatusLabel1.Text = "Failed to Load Workbook"; toolStripStatusLabel1.Visible = true; } Workbook wb = new Workbook(excel.Workbooks.Open(currentPath)); 我收到错误: System.Runtime.InteropServices.COMException未处理Message =检索具有CLSID {00020819-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因如下:80040154类未注册(exception来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG ))。 Source = mscorlib ErrorCode = -2147221164 我只想要一个预定义的工作簿来添加工作表

通过打开Excel窗口将C#中的数据写入Excel中断

当我的C#程序将数据连续写入Excel电子表格时,如果最终用户单击右上angular的菜单并打开“Excel选项”窗口,则会导致System.Runtime.InteropServices.COMException与HRESULT:0x800AC472中断数据写入到电子表格。 理想情况下,应允许用户在不引起exception的情况下执行此操作。 我发现这个错误代码的唯一解决scheme是循环,并等待,直到exception消失: 从HRESULTexception:0x800AC472有效挂起的应用程序,数据不写入Excel,用户在黑暗中留下的问题。 我想写关于Excel的主菜单,但没有find一个参考如何做到这一点。 我的应用程序支持Excel 2000至2013年。 这里是如何重现这个问题: 使用Visual Studio Express 2013 for Windows桌面,使用Excel 2007在Windows 7 64位上使用.NET 4.5.1。 创build一个新的Visual C#控制台应用程序项目。 添加对“Microsoft Excel 12.0对象库”(对于Excel)和对“System.Windows.Forms”(对于消息框)的引用。 这里是完整的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading.Tasks; using System.Threading; // for sleep using System.IO; using System.Runtime.InteropServices; using System.Reflection; using Microsoft.Win32; using Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication1 […]

如何阅读在Excel中的Excel表的评论

我正在尝试阅读Excel表中的意见,但无法这样做。 请帮忙。 提前致谢。 我的代码如下 – Excel.Application appExl; Excel.Workbook workbook; Excel.Worksheet NwSheet; Excel.Range ShtRange; appExl = new Excel.Application(); workbook = appExl.Workbooks.Open(Server.MapPath("~/" + System.Configuration.ConfigurationManager.AppSettings["ExcelFile"] + fileName), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1); string obj = NwSheet.Range[0].Comment.Text;