Tag: interop

在VB.NET表单的Excel工作表中实时更新数据

我有一个VB.NET与.NET 4.5的表单。 我有一个EXCEL文件并排打开的窗体。 我想在EXCEL表格中看到来自代码LIVE的更新数据。 但不能看到数据。 下面是代码 Imports Microsoft.Office.Interop.Excel Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Me.OpenFileDialog1.ShowDialog() Dim xlApp As Application Dim xlWorkBook As Workbook Dim xlWorkSheet As Worksheet xlApp = New ApplicationClass 'xlApp.ScreenUpdating = False xlWorkBook = xlApp.Workbooks.Open("E:\BACKUP\TRY.xls") xlWorkSheet = xlWorkBook.Worksheets("Sheet1") 'display the cells value B2 MsgBox(xlWorkSheet.Cells(8, […]

Microsoft Office Interop Excel ExportAsFixedFormat – 非常慢,图像未加载

我想将生成的.xlsx电子表格导出为PDF。 我有两个问题: 导出文档对于这两种方法都很慢–SaveAs()ExportAsFixedFormat() ExportAsFixedFormat不会导出图像。 我使用IIS运行ASP.NET服务器中的代码。 已经configuration的权限就像这里所说: https : //support.comodo.com/index.php?/ Knowledgebase/Article/View/1129/66/access-denied-exception-from-hresult-0x80070005- e_accessdenied 这个版本库的代码没有错误: https : //github.com/aardvarkss/ExcelPDFExport 我也用EPPlus生成.xlsx文件。 代码: Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbooks excelWorkbooks = app.Workbooks; Microsoft.Office.Interop.Excel.Workbook wkb = excelWorkbooks.Open(this.tempExcelFilePath); foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in wkb.Sheets) { sheet.SaveAs(this.tempPdfFilePath); // Saves the PDF correct AS I want But it cannot finish the task (waiting around 3 mins) […]

使用C#将数据附加到现有的Excel文件

我相当新的C#和我想从C#中的DataGridView导出一些数据到一个Excel文件。 datagridview的input由用户填写。 目前,我的程序可以创build一个excel文件以及datagridview中给定date的值作为文件名。 我的问题是我似乎无法find一种方法来追加gridview中的数据如果excel文件已经存在,它会改写当前的excel文件。 任何帮助/提示/build议是高度赞赏。 谢谢 :) 这是我的代码: Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; Microsoft.Office.Interop.Excel.Sheets xlBigSheet; Microsoft.Office.Interop.Excel.Sheets xlSheet; object misValue; String newPath; private void buttonOK_Click(object sender, EventArgs e) { createXLSfile(); } private void createXLSfile(){ String cDate = datePicker.Value.ToShortDateString(); String cMonth = datePicker.Value.ToString("MMMM"); String cYear = datePicker.Value.ToString("yy"); String cDay = datePicker.Value.ToString("dd"); String fName = cDay + […]

删除单元格中的值前面的空白字符C#

我目前正忙于使用C#处理Excel数据的应用程序。 但是我遇到了一个问题。 列中的数据都在其前面有一个空格,这与Sum()函数混淆了。 我有这种方法来读取列中的每一行,并删除数据前面的空白。 private void BlankCheck() { string Val,NT; int RCount = xlWorksheet.UsedRange.Rows.Count; for(int X = 3; X < RCount; X++) { Val = (string)(xlWorksheet.Cells[X, 8] as Excel.Range).Text; NT = Val.Trim(); xlWorksheet.Cells[X, 8] = "\b"+NT.ToString(); } xlApp.Quit(); ReleaseObject(xlWorksheet); ReleaseObject(xlWorkbook); ReleaseObject(xlApp); } 由此产生的结果是正确的,如下面的截图所示 现在就是问题所在,打开新的excel文档时,空格仍然在数据的前面。 所以我在写入单元格时向string添加了“\ b”,但这是结果。 我不确定为什么这些[]出现了? 有什么build议么 ? 这就是excel列在代码运行之前和之后都没有/ b的情况。 不知道你能否看到,但是在时代前面有一个空白的人物。 那些已经问过的人也是这个代码。 private void […]

C#Interop定义一个工作表数组

我如何用4个worksheets定义一个数组? 例如,这些是我的worksheets : var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; var wsEvars = wb.Sheets["Evars"]; var wsProps = wb.Sheets["Props"]; var wsEvents = wb.Sheets["Events"]; var wsListVars = wb.Sheets["List Vars"]; 我想把它们包含在一个数组中,如下所示: var sheets = [wsEvars, wsProps, wsEvents, wsListVars];

为什么我的excel阅读器类除了date字段之外正确地读取每个字段?

我在使用Interop的Excel表格中阅读了多个领域,并且工作得几乎完美。 除了date字段外,每个字段都被读入,而date字段由一个奇怪的数字填充,这个数字与Excel文档中的任何内容无关。 下面是我需要运行程序的代码。 为了查看问题,必须运行testing类才能看到在控制台上输出的结果以及testing类中的testing。 excel文件必须在桌面上,标题为TEST.xlsx。 如果您需要检查我的Excel工作表,它链接在这里的谷歌文件。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Office.Interop.Excel; using _Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication1 { /// <summary> /// This class reads data from an excel sheet and stores the data in Sales objects /// and then places each Sale into a List of Sales. /// […]

Excel Com Interop ASP.Net无法将文件写入磁盘。 权限?

我有一个非常简单的网页表单,让用户select报表,一个他们希望在xls格式,而不是CSV格式的报告。 我已经使用COM INTEROP与excel 2007掀起了报告。它在我的本地计算机上工作,并可以写入文件,但在Web服务器上失败,出现此错误: 由于没有足够的可用内存或磁盘空间,Microsoft Office Excel无法打开或保存更多的文档。 •要提供更多内存,请closures不再需要的工作簿或程序。 •要释放磁盘空间,请从保存的磁盘中删除不再需要的文件。 服务器上有足够的磁盘空间,所以我不认为这是一个权限问题? 我已经升级了ASPNET和NETWORK SERVICE帐户,以便对我们保存报告的文件夹进行写入和修改访问 – 但仍然没有喜悦。 有任何想法吗? 我是否需要使用特定的用户帐户调用com对象,或者可以将interop调用提升为pipe理员帐户? 任何想法如何做到这一点?

如何在Windows 2008上做excel互操作?

最近部署我的Web应用程序在Windows Server2008,IIS7(与Office安装)。 在追赶(捉住)各种其他错误之后,我正面临一个我不确定从哪里开始。 在卡西尼(视觉工作室开发服务器)一切工作完美(通过Excel互操作阅读优秀)。 在w2008 IIS上抛出模糊的错误: 值不能为空。 参数名称:o [ArgumentNullException:值不能为空。 参数名:o] System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Object o)+9430474 longnamespace.ExcelReader.Dispose()in c:\ longpath \ ExcelReader.cs:23 longnamespace.ApplicationFormReader.Read(String path)in c: \ longpath \ ApplicationFormReader.cs:32 目前,我将添加空检查,看看事情是否有所好转,但我怀疑它只是在finally阻止它开始读取任何东西之前就被炸毁。 试图设置应用程序池在本地系统下运行,但没有任何改变。 有任何想法吗? 这是如何configuration方法的样子 //http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects-in-c/159419#159419 public void Dispose(){ GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); Marshal.FinalReleaseComObject(_ws); //Worksheet, line 23 _wb.Close(); Marshal.FinalReleaseComObject(_wb); //Workbook _ap.Quit(); Marshal.FinalReleaseComObject(_ap); //Application } 我相信这个事件是相关的 机器默认权限设置不授予CLSID {00024500-0000-0000-C000-000000000046}的COM服务器应用程序的本地激活权限给用户NT AUTHORITY \ NETWORK SERVICE SID(S-1-5-20)从地址LocalHost(使用LRPC)。 […]

C#。 微软interop excel

当我试图将List写入Excel工作簿时,有一个简单的问题。 在string的工作完美,但问题是我怎么可以把列表放入Excel中 public List<string> _RoomType = new List<string>(); Excel.Range RoomType = (Excel.Range)_sheet.get_Range(_sheet.Cells[22, "B"] as Excel.Range, _sheet.Cells[25, "B"] as Excel.Range); for (int i = 0; i < _RoomType.Count; i++) { RoomType.set_Value(Type.Missing, _RoomType[i]); 如果即时通讯使用for循环它设置从22B到25B只有在列表中的第一个值,如果我不使用'为'视觉工作室给我例外:HRESULT:0x800A03ECexception任何人都可以帮助我吗?

如何把数组放入excel范围

我知道如何将单个单元格写入Excel中,但是当我试图在Excel数组表格填充只有最后一个值 这是我的范围 Excel.Range ServiceName = (Excel.Range)_sheet.get_Range(_sheet.Cells[38, "B"] as Excel.Range, _sheet.Cells[45, "B"] as Excel.Range); _ServiceName是包含1,2,3,4,5,6的列表 for (int i = 0; i < _ServiceName.Count; i++) { ServiceNameArray[0, i] = _ServiceName[i]; } 这个我想写入excel,但正如我所说的,只有最后一个项目(6)在Excel的书 for (int i = 0; i < _ServiceName.Count; i++) { ServiceName.set_Value(Type.Missing, ServiceNameArray[0,i]); } 有没有人有一个想法?