Tag: c#

Excel 2016触发撤消保存错误?

Excel 2016似乎在保存时触发以编程方式添加撤销级别,这在早期版本的Excel(2013,2010和2007)中不会发生。 要重现这种明显的错误,请打开一个新的工作簿并将其保存为启用macros的工作簿(.xlsm文件)。 将以下代码粘贴到ThisWorkbook模块中: Option Explicit Public WithEvents App As Application Private Sub Workbook_Open() Set App = Application End Sub Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range) Application.OnUndo "foo", "modTest.Undo" End Sub 然后,插入一个名为modTest的新模块并粘贴以下代码: Public Sub Undo() MsgBox "This is the Excel 2016 bug." End Sub 最后,保存工作簿并重新打开它。 在任何单元格中input任何值以触发Application.SheetChange事件。 保存工作簿(出于某种原因,您可能需要这样做两次),并且将显示modTest的消息。 任何人都可以解释这里可能会发生什么,和/或如何解决这个问题? 如果这确实是一个错误,那么向Microsoft报告的最好方法是什么? 这个代码是VBA,但是由于这个问题会影响用VB.NET和C#编写的VSTO插件,所以我包含了这些标签。

带有WebBrowser控件的Excel CustomTaskPane – 键盘/焦点问题

我有这个确切的问题https://social.msdn.microsoft.com/Forums/vstudio/en-US/e417e686-032c-4324-b778-fef66c7687cd/excel-customtaskpane-with-webbrowser-control-keyboardfocus-issues?论坛= VSTO 这里还提到https://connect.microsoft.com/VisualStudio/feedback/details/521465/the-focus-issue-between-excel-cells-and-excel-customtaskpane-with-webbrowser-control 我正在写一个使用Visual Studio Professional 2013的Excel 2010插件。我用一个System.Windows.Forms.WebBrowser子程序创build了一个简单的CustomTaskPane。 该插件工作正常,我可以通过点击浏览网页浏览器,并改变checkbox的状态。 当我点击一个input文本框我得到焦点,我看到光标闪烁,但是当我开始input文本发送到Excel,并写入到一个单元格,而不是浏览器内的文本框。 当function区加载时,我添加自定义任务窗格。 private void Ribbon_Load(object sender, RibbonUIEventArgs e) { TaskPaneView taskPaneView = new TaskPaneView(); Microsoft.Office.Tools.CustomTaskPane myTaskPane = Globals.ThisAddIn.CustomTaskPanes.Add(taskPaneView, "Title"); myTaskPane.Visible = true; } 当我点击文本框然后F6它正常工作。 customtaskpane标题会稍微变暗,并在文本框中捕获文本。 我怎样才能解决这个问题,以便当我点击input文本框文本进入框,而不是Excel? 编辑:好的,我做了一些更多的testing。 如果我添加事件在我的TaskPaneView跟踪鼠标进入并单击他们的工作,但只有当我删除Web浏览器子。 这意味着Web浏览器以某种方式阻止这些事件,并阻止TaskPaneView了解它的重点。 如果我还将一个文本框表单控件添加到浏览器旁边的TaskPaneView中,则该文本框完全正常工作,并且TaskPaneView知道它具有焦点,然后浏览器中的input文本字段将开始工作。 如果我直接在Web浏览器上调用焦点方法,那么TaskPaneView就会明白它具有焦点,而且一切正常。 所以显然这个问题并不是真正的键盘问题,而是一个TaskPaneView的问题,当浏览器被点击时,没有被告知它有焦点,所以击键到了错误的地方。 如果我能find一种方法使TaskPaneView明白它已经聚焦每一个应该工作。

从VBA访问VSTO应用程序插件types(Excel)

我们有一个用于Excel的VSTO应用程序插件(不是文档插件),我们希望将事件暴露给VBA代码,以便VBAmacros可以在插件中引发此事件时执行一些操作。 我怎样才能得到的VBA代码能够订阅在VSTO应用程序插件中定义的事件? 我认为,因为在Excel过程中加载插件,这不应该太棘手,但还没有find一种方式。 顺便说一下,使用VS 2008和Excel 2007。 谢谢!

如何以编程方式在Excel表格中设置单元格的格式?

我们有一个asp.net c#程序,它从Excel文件中读取表格,并将其写入新的表格(如果数据来自Sql Server表格,也添加一列)。 问题:在新工作表中,数据没有按照我们的要求格式化。 例如,我们希望没有时间的date和左alignment的,但是它们的格式与时间和右alignment等。 我们如何格式化Excel单元格? 这是我们的代码: newSheet = (Worksheet)sheets.Add(sheets[1], Type.Missing, Type.Missing, Type.Missing); newSheet.Name = worksheetName; for (int i = 0; i < headerList.Count; i++) { newSheet.Cells[1, i + 1] = headerList[i]; Range headerRange = newSheet.Cells[1, headerList.Count]; ; headerRange.Font.Bold = true; } for (int i = 0; i < listDrugOrder.Count; i++) { DrugOrder drugorder = […]

从stream中读取excel文件

我需要一种方法来从stream中读取Excel文件。 它似乎不适用于ADO.NET的做事方式。 该scheme是用户通过FileUpload上传文件,我需要从文件中读取一些值并导入到数据库。 由于几个原因,我无法将文件保存到磁盘,也没有理由这样做。 那么,有谁知道从FileUploadstream中读取Excel文件的方法?

更新Excel工作表时,操作必须使用可更新的查询

尝试更新Excel表时出现此错误: Server Error in '/ReadExcelData_Csharp' Application. Operation must use an updateable query. 这里是我使用的代码: querys = "UPDATE [Sheet1$] "+"SET [Number]=" +s.Trim()+ " WHERE [Number]=" + s2.Trim() ; objcmc = new OleDbCommand(querys, conn); objcmc.ExecuteNonQuery(); 任何帮助将不胜感激 。 这里是我使用的连接: if (strFileType.Trim() == ".xls") { connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; } else if (strFileType.Trim() == […]

使用Interop打印Excel

有没有人有任何想法如何使用C#和Excel Interop编程方式打印Excel文件? 如果是这样,你能提供代码吗?

使用C#读取/写入Excel文件(.xls / .xlsx)

如何在C#中读写Excel文件? 我已经将Excel对象库添加到了我的项目中,但是我没有得到足够清晰的描述来访问这些文件需要做什么。 请帮助我理解,并在解释时,请记住,我是一个新的,但我不是一个完整的新手。 我学习了很多,所以我不完全无知。

在C#中安全地configurationExcel互操作对象?

我正在一个winforms c#visual studio 2008应用程序。 该应用程序会谈excel文件,我正在使用Microsoft.Office.Interop.Excel; 去做这个。 我想知道如何确保即使有错误,对象也被释放? 这是我的代码: private void button1_Click(object sender, EventArgs e) { string myBigFile=""; OpenFileDialog openFileDialog1 = new OpenFileDialog(); DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. if (result == DialogResult.OK) // Test result. myBigFile=openFileDialog1.FileName; Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; Excel.Range range; string str; int rCnt = 0; int cCnt = […]

C#和Excel自动化 – 结束正在运行的实例

我正在通过C#尝试Excel自动化。 我已经遵循了微软关于如何解决这个问题的所有指示,但是我仍然在努力放弃最后的参考资料给Excel来closures并使GC收集它。 代码示例如下。 当我注释掉包含类似于以下行的代码块时: Sheet.Cells[iRowCount, 1] = data["fullname"].ToString(); 然后该文件保存并退出Excel。 否则,文件会保存,但Excel仍将作为一个进程运行。 下次运行代码时,会创build一个新的实例并最终build立起来。 任何帮助表示赞赏。 谢谢。 这是我的代码的准系统: Excel.Application xl = null; Excel._Workbook wBook = null; Excel._Worksheet wSheet = null; Excel.Range range = null; object m_objOpt = System.Reflection.Missing.Value; try { // open the template xl = new Excel.Application(); wBook = (Excel._Workbook)xl.Workbooks.Open(excelTemplatePath + _report.ExcelTemplate, false, false, m_objOpt, m_objOpt, m_objOpt, m_objOpt, […]