Tag: .net

无法打开另一个Excel文件(当通过.net打开一个Excel时)

我devise了一个.net应用程序,它将在login时打开一个excel文件,并用它来打印报告。 注销用户时将被closures。 我为excel文件设置可见为false,以便用户不知道后台进程。 但是,如果有人在这段时间内打开任何其他的Excel文件,我的报告Excel文件变得可见,并且Excel对象被折叠。 我必须去任务pipe理器并杀死所有打开的Excel实例来解决这个问题。 码: Private Sub OK_Click(sender As Object, e As EventArgs) Handles OK.Click Try Dim dt As New DataTable() Dim Adapter As New SqlDataAdapter() ConnectMe() Dim SQLCmd As New SqlCommand("uspLogin", Con) SQLCmd.CommandType = CommandType.StoredProcedure SQLCmd.Parameters.AddWithValue("@pLoginName", UsernameTextBox.Text.Trim()) SQLCmd.Parameters.AddWithValue("@pPassword", PasswordTextBox.Text.Trim()) Adapter.SelectCommand = SQLCmd Adapter.Fill(dt) SQLCmd.Dispose() If dt.Rows.Count > 0 Then Me.Cursor = Cursors.WaitCursor Loading.Show() […]

将IEnumerable <T>导出到Excel

任何人都知道如何或一些图书馆使用这个?

如果有任何链接可以免费为C#的Excel“帮手”类库?

我正在寻找任何可用的免费Excel“助手”类为.NET编写(不必是C#)。 我想评估别人认为是有用的和generics静态(和非静态)辅助方法。 可以针对VSTO或定期的Office自动化,虽然这可能无关紧要。 我想我也应该指出,这个问题不是要求“有什么好的select(或自由select)使用Excel对象模型自动化。我不是真的想链接到SS齿轮等,虽然他们都是伟大的产品这不是问题的目的。 如果我在前面的段落中不够清楚:我不想要这样的答案 – 使用这个免费的(或不是免费的)第三方组件,而不是Excel对象模型代码。 所以基本上我所要求的是用户开发的C#代码库,其中包含VSTO,Office或Excel帮助函数,如用于处理菜单,色带,范围,工作簿,文档,xml的静态方法(例如提到的宅男)。 。

如何获得在VB.NET中编写的用于Excel的COM服务器安装并注册在自动化服务器列表中?

版本 Excel 2007,Windows Vista,VB.NET,带有.NET 3.5 sp2的Visual Studio 2008,MSI安装程序包。 我正在尝试做什么 我有一个用VB.NET编写的Excel UDF。 它是作为COM服务器公开的,因为您无法直接在.NET语言中创buildExcel UDF。 安装是一个真正的痛苦,因为没有任何安装设置似乎得到它是正确的; 他们都没有给你一个安装包,把COM服务器放到客户端机器上,注册了服务器,注册了types库,以及在Excel 2007的自动化服务器列表中可见的组件。 我试过了 以下是types库的安装设置,它们的缺陷在编译时和安装时显而易见: vsdrfComSelfReg 在编译安装项目时没有警告 模块xxx.tlb注册失败。 HRESULT -2147024703 组件的ProgID和GUID在registry中设置,但该组件不出现在自动化服务器列表中 vsdrfDoNotregister 编译期间没有警告 安装工作,但当然TLB没有注册 vsdrfCOM 编译时警告:警告:无法为名为“xxx.tlb”的文件创build注册信息 types库在安装过程中未被注册 正确的设置应该是vsdrfCOM,如下所述: 问:任何人都可以告诉vsdrfCOM在Visual Studio的安装项目中的含义吗? 当我在安装项目中检查添加文件的属性中的“注册”属性时可用。 答:这意味着Visual Studio将在构build时提取COM注册数据,并将其放入MSI文件(主要是MSI文件的registry表,还有类表)。 所以当你安装它的时候,你的代码不需要自行注册,因为文件被复制到磁盘并且registry项被创build。 它还将通过向MSI的TypeLib表添加条目来创buildtypes库注册。 许多困难似乎是Vista特有的。 尤其是,使用REGCAP实用程序从.TLB文件生成.REG文件在Vista中不起作用。 如果不是这样的话,那么这个build议可能是有用的 。 相反,它完全可以产生空的.REG文件。 我已经尝试了这个StackOverflowpost中的所有build议。 这篇文章对技术问题有很好的描述: “引用”对话框中的条目来自HKCR \ TypeLibregistry项,而不是来自HKCR \ CLSID。 如果你的程序集没有出现在引用对话框中,但编译后的DLL仍然可以使用你的COM程序集,这意味着你的程序集正确的注册了类和接口,但是types库本身不是。 这个问题 任何人都有如何使安装注册组件和types库的想法? 我无法访问Windows XP计算机。 […]

用C#改变单元格的背景

我正在开发一个使用C#处理Excel文档的程序,而且正在使用 Microsoft.Office.Interop.Excel._Worksheet worksheet; 当我插入一些斧头,我使用的单元格: worksheet.Cells[x, y] = "something"; 现在我想知道是否有可能从C#中更改Cells [x,y]的backColor 。 谢谢。

OpenXML SDK:使Excel重新计算公式

我通过Microsoft Office OpenXML SDK 2.0更新Excel电子表格的某些单元格。 更改值使所有单元格包含依赖于更改的单元格无效的公式。 但是,由于caching的值,Excel不会重新计算公式,即使用户单击“立即计算”。 通过SDK使整个工作簿的所有相关单元失效的最佳方法是什么? 到目前为止,我在http://cdonner.com/introduction-to-microsofts-open-xml-format-sdk-20-with-a-focus-on-excel-documents.htm上find了以下代码片段: public static void ClearAllValuesInSheet (SpreadsheetDocument spreadSheet, string sheetName) { WorksheetPart worksheetPart = GetWorksheetPartByName(spreadSheet, sheetName); foreach (Row row in worksheetPart.Worksheet. GetFirstChild().Elements()) { foreach (Cell cell in row.Elements()) { if (cell.CellFormula != null && cell.CellValue != null) { cell.CellValue.Remove(); } } } worksheetPart.Worksheet.Save(); } 除了这个片段不能编译的事实,它有两个限制: 它仅使单张纸无效,但其他纸张可能包含相关公式 它不考虑任何依赖关系。 我正在寻找一种有效的方法(特别是,只使依赖于某个单元格值的单元格无效),并考虑所有表单。 […]

将列索引转换为Excel列名称

给定一个列索引,如何获得一个Excel列名? 这个问题比听起来更棘手,因为它不仅仅是base-26。 列不像正常数字那样换行。 即使是Microsoft支持示例也不能超越ZZZ。 免责声明:这是我之前做过的一些代码,今天又遇到了我的桌面。 我认为这是值得在这里作为一个预先回答的问题张贴。

ODBC连接到Excel错误

我有一个应该连接到Excel表的ODBC连接的问题,并做它的东西。 我已经在网上阅读了很多关于它的东西,但没有一个解决scheme帮助我(包括计算器)。 所以基本上我正在尝试打开一个表的连接。 private static SortedList<string, School> generateSchoolListExcel(string listFilePath) { StringBuilder con = new StringBuilder(); OdbcConnectionStringBuilder.AppendKeyValuePair(con, "Data Source", listFilePath); OdbcConnectionStringBuilder.AppendKeyValuePair(con, "HDR", "yes"); OdbcConnectionStringBuilder.AppendKeyValuePair(con, "Format", "xlsx"); OdbcConnectionStringBuilder.AppendKeyValuePair(con, "Driver", "{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}"); //I have tried to specify driver without parentheses {} but it's still the same List<School> schoolList = new List<School>(); using (OdbcConnection […]

从内存中打开excel工作簿

我正在尝试从内存stream中打开一个Excel工作簿。 我有一个url的Excel文件,我所做的是我从url下载数据,然后将其保存到一个内存stream,但我不知道如何从stream中打开工作簿,这是我的代码是如何工作的远。 WebClient wc = new WebClient(); byte[] fileArray = wc.DownloadData("url is inserted here"); MemoryStream ms = new MemoryStream(fileArray); 但从这里我不知道如何去读取stream中的数据来创build工作簿,它似乎不像来自http://msdn.microsoft.com/zh-cn/library/ff478410的电子表格文档以我想要的方式工作,任何帮助或指针将不胜感激

Excel单元格值由OLEDB提供程序截断

我使用OleDbConnection类从Excel 2000/2003工作簿检索数据: string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=\"Excel 8.0;IMEX=1\";"; OleDbConnection connection = new OleDbConnection(connectionString); connection.Open(); // code to get table name from schema omitted var dataAdapter = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", name),connection); var myDataSet = new DataSet(); dataAdapter.Fill(myDataSet, "ExcelInfo"); 现在事实certificate,长度大于255个字符的工作表中的单元格被截断。 这是Microsoft.Jet.OLEDB提供程序中的限制,还是我可以做些什么呢? 任何人?