Tag: excel interop

C# – 无法replaceExcel文件中的文本中的文本

我写了一个代码来replaceexcel文件中的文本。 但问题是,如果在一个句子中find文本,这个代码不会取代文本。 难道我做错了什么 ? 在Word文档中,我可以通过将MatchWholeWord标志更改为false来解决此问题。 这是我的代码: static void ReplaceTextInExcelFile1(string filename, string replace, string replacement) { object m = Type.Missing; // open excel. Excel.Application app = new Excel.Application(); // open the workbook. Workbook wb = app.Workbooks.Open( filename, m, false, m, m, m, m, m, m, m, m, m, m, m, m); // get the active worksheet. […]

C#UsedRange计数不正确

我使用UsedRange对象的Excel.Worksheet属性来获取行数和列数。 如果我尝试删除列或行, UsedRange计数应相应减less。 但是,经过大量的debugging,按照一定的顺序改变列的Hidden属性和列宽。 计数不会相应地改变,这应该表明为细胞设定了锚点。 请帮忙解释一下(因为它会影响我的代码)。 testing代码: Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet; Debug.WriteLine("Used Range Column Count 1: " + worksheet.UsedRange.Columns.Count); worksheet.Range["A1"].Formula = "1"; worksheet.Range["B1"].Formula = "1"; worksheet.Range["C1"].Formula = "1"; worksheet.Range["D1"].Formula = "1"; Debug.WriteLine("Used Range Column Count 2: " + worksheet.UsedRange.Columns.Count); Range column = worksheet.Columns[4]; column.Delete(); Debug.WriteLine("Used Range Column Count 3: " + worksheet.UsedRange.Columns.Count); worksheet.Range["D1"].Formula = "1"; […]

使用Interop库进行Web服务器端Excel创build

我正在尝试使用互操作库创buildexcel文件,但下面是我得到的错误: Creating an instance of the COM component with CLSID {00024500-0000-0000- C000-000000000046} from the IClassFactory failed due to the following error: 8001010a The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)). 我在网上查看了很多资源,大致可以分为以下几类: 互操作库专为桌面应用程序构build, 强烈build议在服务器端Web应用程序(如wcf)中使用它们。 与交互式用户或DefaultAppPool相关的权限问题。 如此等等。 那么,这里的警告,我不能改变服务器端的应用程序,一切工作在其他地方。 几天前,Office 2016从我的机器上被推到了我的机器上,事情在我的本地机器上停止工作(出现以上错误)。 现在我不能去改变一个遗留的代码,但看看我能否解决我的问题在本地进行进一步的开发。 这是我做的,请注意,这台机器上的一切都在工作(当办公室2013在那里): 得到了办公室2016年卸载,并重新安装办公室2013年,同样的问题,因此恢复到办公室2016年。目前MS-Office 2016 32位安装。 在Microsoft Excel Application的安全选项卡的各个部分validation的权限,添加IIS AppPool \ DefaultAppPool用户,IIS_IUSRS,具有完全控制权限的交互式用户(不应该错误是“访问被拒绝”,有权限错误? […]

在richtextbox vb.net的表格中显示Excel数据

我正在使用gembox.spreadsheet在富文本框中导入数据,这里是代码: Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk Dim ef As ExcelFile = ExcelFile.Load(OpenFileDialog1.FileName) Dim sb As New StringBuilder() For Each sheet As ExcelWorksheet In ef.Worksheets sb.AppendLine() sb.AppendFormat("{0} {1} {0}", New String("-"c, 25), sheet.Name) For Each row As ExcelRow In sheet.Rows sb.AppendLine() For Each cell As ExcelCell In row.AllocatedCells If cell.ValueType <> […]

Interop Excel方法LinEst与DISP_E_TYPEMISMATCH失败

我在制作Excel的LinEST函数时遇到一个问题。 我的程序是这样的 MyExcel.Application xl = new MyExcel.Application(); MyExcel.WorksheetFunction wsf = xl.WorksheetFunction; List<int> x = new List<int> { 1, 2, 3, 4 }; List<int> y = new List<int> { 11, 12, 45, 42 }; object o = wsf.LinEst(x, y, true, true); 而命名空间是using MyExcel = Microsoft.Office.Interop.Excel; 该程序正在编译顺利,但在运行时它正在抛出一个错误 {System.Runtime.InteropServices.COMException (0x80020005): Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH)) 其实这是我第一次使用Excel函数..所以我无法进一步进行。 […]

如何“sheetwise”将Excel工作簿保存或导出为PDF文件?

我的代码存在的问题是要么将工作簿中所有工作表中的所有页面都保存起来,要么只保存“from”和“to”参数指定范围内的页面。 我正在使用的Excel文件有7个工作表,每个工作表可以有任何数量的页面。 例如,如果我指定要导出“从1到4”,则只有第一个工作表的前4个页面将作为PDF文档导出,而不是前4个工作表的所有页面。 有人能告诉我如何实现我想要做的? 下面的代码不是我想要的: application.ActiveWorkbook.ExportAsFixedFormat( Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, path, Excel.XlFixedFormatQuality.xlQualityStandard, true, true, 1, 4, false, Missing.Value);

C#Excel的interopsorting范围,使空白单元格走到最后,数据单元格上升

我有一个Excel 97-2003 .xls电子表格使用C#-4.0和Excel.Interop从.dbf转换。 数据根据D列按datesorting。 http://www.tiikoni.com/tis/view/?id=af4cf69 现在我需要按G列对选定范围(图中所示)进行sorting,以便空白单元格位于所选范围的底部。 图像正确显示,但仅仅是因为从input源检索的数据是按正确的顺序input的。 如果数据没有按照正确的顺序input,那么从一开始,空白单元格可能不在G列的最下面。 这是我有,为每个Ddate范围(一天)进行sorting。 Range incasariSortRange; Range sRange; int startDateRowIndex = 6; // index of row where a D date starts int endDateRowIndex = 6; // index of row where the same D date ends public void selectGroupRange() { for (int r = startDateRowIndex; r < rowIndex; r++) { if […]

在VB.NET中调用Marshal.FinalRelease后,Excel的实例仍然存在

我在这里看了一些关于在我的程序运行后摆脱一个Excel实例的提示,但没有任何build议似乎工作。 当我最初运行它将创build一个Excel的实例,但程序仍在运行,我通过单击button重新运行此代码; 它会创build另一个excel实例,但是这一次它删除了它创build的实例,只留下程序第一次运行时创build的实例。 到目前为止,我的代码是这样的:( 更新代码截至2012年9月14日) Private Sub GetBatchFileContents() Dim xlApp As Excel.Application Dim xlWB As Excel.Workbook Dim xlWS As Excel.Worksheet Dim xlRan As Excel.Range Dim xlVal(,) As Object Dim lastRow As Int32 xlApp = New Excel.Application() xlWB = xlApp.Workbooks.Open(TextBox1.Text.ToString(), _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, _ Type.Missing, […]

刷新Excel文件,从SQL Server获取其数据与C#

我一直在寻找c#的教程来刷新一个excel文件,而无需打开excel并单击刷新button。 我find了解决scheme,这很容易。 我想分享 private void ExcelRefresh(string Filename) { try { object NullValue = System.Reflection.Missing.Value; Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); //excelApp.DisplayAlerts = false; Microsoft.Office.Interop.Excel.Workbook Workbook = excelApp.Workbooks.Open( Filename, NullValue, NullValue, NullValue, NullValue, NullValue, NullValue, NullValue, NullValue, NullValue, NullValue, NullValue, NullValue, NullValue, NullValue); Workbook.RefreshAll(); System.Threading.Thread.Sleep(20000); Workbook.Save(); Workbook.Close(false, Filename, null); excelApp.Quit(); Workbook = null; System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp); } catch(Exception ex){ […]

当工作表被删除并用C#replace时,如何保存公式对工作表的引用?

如何在更换工作表后继续使用公式? 我的意思是当工作表被删除和replace时,如何保存公式对工作表的引用? 但在C# using Excel = Microsoft.Office.Interop.Excel; Excel.Application excelApp = new Excel.ApplicationClass(); Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(connection.DataSource, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); foreach (Excel.Worksheet sh in excelWorkbook.Sheets) { if (sh.Name == SheetName || sh.Name == "_"+SheetName) { sh.Application.DisplayAlerts = false; sh.Delete(); } } excelWorkbook.Save(); excelWorkbook.Close(true, excelWorkbook.FullName, null); […]