Tag: excel interop

Excel Interop应用图表模板

问题概述: 我为使用C#的“客户端”excel支持(microsoft.office.interop.excel)和EPPlus库自动生成报告(excel)。 我的客户对图表devise不太灵活,所以我的图表必须和他们的图表具有完全相同的风格。 没问题,我使用Excel 2010导出了他们的图表模板 什么不行: 我无法通过代码应用任何图表模板 我曾经尝试过: 1 – EPPlus:不支持将模板加载到图表 2 – InteropExcel:应用模板引发exception失败,这是我的代码: Application excelApp = null; Workbook workbook = null; Microsoft.Office.Interop.Excel.Worksheet worksheet = null; try { excelApp = new Microsoft.Office.Interop.Excel.Application(); workbook = excelApp.Workbooks.Open(config.DiretorioRelatorio); worksheet = workbook.Sheets[Consts.RECOVERED_SHEET]; string template = config["templatePath"]; // .crtx file ChartObjects charts = worksheet.ChartObjects (); ChartObject chart = ((ChartObject)charts.Item (0)); […]

C#Excel互操作合并不能正常工作

我已经定义了一个范围: Range range = ws.Range[ws.Cells[7, 1], ws.Cells[7, 4]]; 并与之核对 range.Interior.Color = rgbBlueViolet; 所以范围是正确的,因为我看到它的颜色。 但是当我这样做 range.Merge(true); 我得到以下例外: {System.Runtime.InteropServices.COMException(0x800A03EC):在Microsoft.Office.Interop.Excel中System.RuntimeType.ForwardCallToInvokeMember(stringmemberName,BindingFlags标志,对象目标,Int32 [] aWrapperTypes,MessageData和msgData)上HRESULT:0x800A03ECexception。 Range.Merge(Object Across) 这我不明白。 我的目标是合并前四列,看看哪些对我来说似乎是合法的。 谢谢你的帮助帕特里克

使用Excel Interop C#sortingExcel行

我有一个C#程序,将结果放在Excel电子表格中。 每行包含竞争对手的信息,包括姓名,身份证号码,地址,分数等几个字段,每个字段在不同的列中。 我想根据分数sorting所有这些竞争对手(所以我想对这些行进行sorting),logging从最高到最低sorting。 什么是最好的方式去做这件事? 这是我正在尝试哪些不工作的代码。 Excel.Range sortRange; sortRange = worksheet.get_Range("A14", "K32"); Excel.Range scoreColumn; scoreColumn = worksheet.get_Range("C14", "C32"); sortRange.Sort(scoreColumn, Excel.XlSortOrder.xlDescending,

附加到现有的Excel实例

我试图确定是否打开一个特定的文件运行Excel的实例,如果这样附加到它,所以我可以控制该实例。 我已经搜遍了,而我所得到的大部分都来自这个问题。 它有一个对另一个网站的参考,但不幸的是它已经死了,所以我不能读它。 我的代码到目前为止是; //Is Excel open? if (Process.GetProcessesByName("EXCEL").Length != 0) { Process[] processes = Process.GetProcesses(); foreach (Process process in processes) { //Find the exact Excel instance if (process.ProcessName.ToString() == "EXCEL" && process.MainWindowTitle == ("Microsoft Excel – " + fileName)) { //Get the process ID of that instance int processID = (int)Process.GetProcessById(process.Id).MainWindowHandle; //Attach to the […]

为什么最后一行永远不会被读取?

你好,我有一个问题,为什么最后一行永远不会被读取? 不pipe它在excel文件中只有一行还是100行都不重要。 最后一行从不显示在列表中。 而我不知道为什么…. 这是我的Excel文件: 这是我的方法: public List<string> getListData(bool skipFirstRow, int numberOfColumns, string filepath) { int startpoint = 1; int cell = 1; int row = 1; List<string> stringList = new List<string>(); //Open Excel (Application) var excelApplication = openExcelApplication(); //Open Excel File Excel.Workbook excelWorkbook = excelApplication.Workbooks.Open(filepath); //Get the Worksheets from the file Excel.Sheets excelSheets = […]

在Visual Studio 2010的debugging模式下运行时,Excel不会打开/启动VSTO AddIn

我以前安装了VS11testing版,并且在我的Visual Studio 2010实例中遇到了一些问题,您可以在这里看到如何解决这些问题: Excel AddIn Click Once部署问题 。 现在我有一个编译/构buildvsto的代码库,它在Excel 2010中安装正常,运行良好。但是,当我从Excel中删除安装的版本并尝试直接通过Visual Studio 2010运行它时,AddIn不会得到在debuggingconfiguration模式下运行时加载到Excel,在发布configuration模式下,它工作正常。 任何想法,为什么这可能会发生? 我已经尝试通过Com AddIns重新启用它,还有一些没有运气的东西。

我怎样才能设置一个Excel窗口的大小?

我有一个wpf窗口应该在Excel窗口旁边打开。 Excel打开并使用Interop.Excel进行处理。 在我的窗口中,我有一个方法,它应该设置Excel窗口的大小。 private void SetLayout() { Top = 0; Left = 0; Height = SystemParameters.WorkArea.Height; ((ConfiguratorWindowViewModel) DataContext).Manager.App.Height = SystemParameters.WorkArea.Height; ((ConfiguratorWindowViewModel) DataContext).Manager.App.Left = Width; ((ConfiguratorWindowViewModel) DataContext).Manager.App.Width = SystemParameters.WorkArea.Width – Width; } 在我的ViewModel中,我有一个pipe理器,可以打开Excel应用程序(Office.Interop.Excel.Application)。 我可以设置我的wpf窗口的高度,顶部,它工作正常,但不是在Excel窗口。 我如何设置我的wpf窗口旁边的Excel窗口的大小,以便两个填充整个屏幕在一起? 编辑: 我试过这个,但它也不能正常工作: ((ConfiguratorWindowViewModel) DataContext).Manager.App.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlNormal; ((ConfiguratorWindowViewModel) DataContext).Manager.App.ActiveWindow.Height = Screen.PrimaryScreen.Bounds.Height; ((ConfiguratorWindowViewModel) DataContext).Manager.App.ActiveWindow.Width = Screen.PrimaryScreen.Bounds.Width – Width; 两者都将高度设置为不同的值,但不是正确的,当我硬编码像.Height=800; 它也没有工作。 不幸的是,我不能发布图片来展示它的外观,它应该看起来像。 编辑: 问题是不一样的( […]

更改Excelbutton的标签

我正在尝试使用C#在Excel中添加一个button。 我已经添加了以下代码的button: Shape rpsImportButton = worksheet.Shapes.AddFormControl(XlFormControl.xlButtonControl, 700, 35, 150, 22); rpsImportButton.Name = "Genrate RPS Import Template"; 我遇到的问题是button上的标签只显示为“button2”。 .Name属性不会设置标签。 我的问题是,如何设置button的标签? 我会认为这是一个简单的问题,而我只是缺less一些小东西。 谢谢

在Excel表格中禁用单元格

我使用互操作来创buildExcel表格,并将其存储在我的数据表格中,并为用户打开它。 有一些我不希望用户编辑的列。 导出excel表单时,是否可以禁用特定的单元格? 以下是我的代码 Excel.Workbook excelWorkBook = excelApp.Workbooks.Open(Server.MapPath("UploadedExcel/" + lblTestCode.Text.Trim() + ".xls")); FieldInfo myf = typeof(TEST).GetField("abcd"); foreach (DataTable table in ds.Tables) { //Add a new worksheet to workbook with the Datatable name Excel.Worksheet excelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Sheets.Add(); // excelWorkSheet.Name = "Sheet1"; for (int i = 1; i < table.Columns.Count + 1; i++) { excelWorkSheet.Cells[1, i] = […]

使用C#编程将Excel单元格从科学数值格式化为文本格式

使用Microsoft.Office.Interop.Excel引用将数据从我的sqlServer数据库提取到Excel工作表后,我正面临一个问题。 数字数据以科学数字格式显示,而不是以文本格式显示。 我尝试这样格式化我的单元格,但仍然无效: Microsoft.Office.Interop.Excel.Range cell= (Range) worksheet.Cells[rowNum, fieldNum]; cell.NumberFormat="@"; Microsoft.Office.Interop.Excel.Range cell= (Range) worksheet.Cells[rowNum, fieldNum]; cell.NumberFormat="@"; 我甚至尝试在我的inputExcel文件中设置我的单元格格式; 我实际上使用这个程序作为模板; 作为数字或文字,但无奈,它不工作。 我该如何解决这个问题?