Tag: .net

VSTO:将元数据附加到Excel中的单元格?

我正在使用VSTO创buildExcel加载项。 这个插件检索并显示来自sql-server的大量数据。 这很好,但后来我打算访问Excel中的一些数据,并在某些方面进行修改。 我的问题是,我需要一种分类我想修改的单元格的方法。 有没有什么办法可以将元数据添加到单元格中,以了解它是否应该修改的单元格? 例如,添加一个属性到单元格,例如“editable_cell”,并做一些像Excel.FindCellsWithAttribute(“editable_cell”)来寻找所需的单元格? 谢谢! /古斯塔夫

.NET错误:无法find依赖项“Microsoft.Office.Interop.Excel”

我的同事写了一个驱动Excel的DLL。 当我在.NET应用程序中引用他的DLL时,我得到一个警告: The dependency 'Microsoft.Office.Interop.Excel' could not be found. 我的应用程序将编译。 但是,当我到达使用我的同事的DLL访问Excel的位时,会抛出一个exception,并显示上面的消息。 我们应该有相同的设置: Windows XP Pro SP3,VS2003,.NET 1.1,Office 2003 我的问题似乎与这个问题类似,但我不知道是否相同。 任何帮助或build议感激地收到! 更新: 感谢迄今为止的答案! 我没有添加一个明确的参考Microsoft.Office.Interop.Excel 。 当然,我不应该? 但是 :当我尝试添加此引用时,无法在“添加引用”对话框中findMicrosoft.Office.Interop.Excel 。 大概这意味着我错过了一个DLL? …但我不明白这是怎么发生的?! 更新(固定): @ConcernedOfTunbridgeWells有解决这个问题的答案:安装主互操作程序集。

C# – 评估Excel逻辑公式

我有一个应用程序,需要评估Excel逻辑公式,我使用Excel DLL来做到这一点,但DLL是不是很有效。 .NET Framework(C#)有任何可以完成此任务的类? 一个样本 我提供这个 =IF(AND(10>=-5;10<0);(-3,8*10+335);IF(AND(10>=0;10<5);(1,4*10+335);IF(AND(10>=5;10<14,4);(-1,2766*10+348,38);IF(AND(10>=14,4;10<25);(-1,5094*10+351,74);IF(AND(10>=25;10<=45);(-1,4*10+349);0))))) 得到这个 335,614 谢谢

如何在C#中dynamic重命名Excel表名

我已经创build了许多工作表,如Sheet1,Sheet2,等。如何在C#中dynamic地重命名这些选项卡名称?

错误:<target> .ColumnName和<source> .ColumnName具有冲突的属性:DataType属性不匹配

我正在尝试使用DataTable.Merge()选项合并多个Excel文件 For Each fileName As String In Directory.GetFiles("C:\TEMP\.", "*.xls") Dim connectionString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=""Excel 8.0;HDR=NO;IMEX=1;""", fileName) Dim adapter As New OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString) Dim ds As New DataSet adapter.Fill(ds, "anyNameHere") Dim TempTable As DataTable TempTable = ds.Tables.Item("anyNameHere") table1.Merge(TempTable) MsgBox(fileName) Next DataGridView1.DataSource = table1 MsgBox(table1.Rows.Count) 但在合并时出现以下错误 <target>.ColumnName and <source>.ColumnName […]

在c#中重新使用基于1的数组

我有一个数组在基于1的(从一个Excel范围调用get_Value生成我得到一个二维数组例如 object[,] ExcelData = (object[,]) MySheet.UsedRange.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault); 这显示为一个数组,例如ExcelData [1..20,1..5] 有什么办法来告诉编译器重新绑定这个,所以我不需要在循环计数器中加1。 List<string> RowHeadings = new List<string>(); string [,] Results = new string[MaxRows, 1] for (int Row = 0; Row < MaxRows; Row++) { if (ExcelData[Row+1, 1] != null) RowHeadings.Add(ExcelData[Row+1, 1]); … … Results[Row, 0] = ExcelData[Row+1, 1]; & other stuff in here that requires a 0-based Row […]

用IDisposable清理Excel互操作对象

在我的公司中,发布Excel Interop对象的常用方法是使用IDisposable以下方式: Public Sub Dispose() Implements IDisposable.Dispose If Not bolDisposed Then Finalize() System.GC.SuppressFinalize(Me) End If End Sub Protected Overrides Sub Finalize() _xlApp = Nothing bolDisposed = True MyBase.Finalize() End Sub 其中_xlApp是通过以下方式在构造函数中创build的: Try _xlApp = CType(GetObject(, "Excel.Application"), Excel.Application) Catch e As Exception _xlApp = CType(CreateObject("Excel.Application"), Excel.Application) End Try 客户端使用using-statement来执行有关excel互操作对象的代码。 我们完全避免使用两点规则 。 现在我开始研究如何释放(Excel)互操作对象以及我发现的几乎所有讨论,比如如何正确清理Excel互操作对象或释放Excel对象 ,大多使用Marshal.ReleaseComObject(),但都不使用IDisposable接口。 我的问题是:使用IDisposable Interace发布excel互操作对象有什么缺点吗? 如果是这样,这些缺点是什么。

Excel互操作:保存工作簿而不显示保存对话框

我必须创build一个将数据集导出到Excel的控制台应用程序。 我试过Googlesearch,看着这个主题的post,但还没有真正find我在找什么。 问题是不应该popup保存窗口,它应该自动创buildexcel文件。 到目前为止,我有下面的代码,但我不知道如何使它自动保存。 将不胜感激任何帮助。 public static void CreateWorkbook(DataSet ds, String path) { int rowindex = 0; int columnindex = 0; Microsoft.Office.Interop.Excel.Application wapp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Worksheet wsheet; Microsoft.Office.Interop.Excel.Workbook wbook; wapp.Visible = false; wbook = wapp.Workbooks.Add(true); wsheet = (Worksheet)wbook.ActiveSheet; try { for (int i = 0; i < ds.Tables[0].Columns.Count; i++) { wsheet.Cells[1, i + 1] […]

如何从XLSX(Excel)读取?

从.xlsx(Excel)文件读取时遇到问题。 我试着用: var fileName = @"C:\automated_testing\ProductsUploadTemplate-2015-10-22.xlsx"; var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString); var ds = new DataSet(); adapter.Fill(ds, "XLSData"); DataTable data = ds.Tables["XLSData"]; // … Loop over all rows. StringBuilder sb = new StringBuilder(); foreach (DataRow row in data.Rows) { sb.AppendLine(string.Join(",", row.ItemArray)); […]

使用Excel Interop发生的最烦人/最奇怪的事情是什么?

在使用.Net的Excel Interop开发一段时间后,我越来越讨厌有多less“奇怪的事情”发生 – 比如我之前发布的这个问题 – 我的问题 。 我很欣赏,这不是一个直接的问题,更多的是一个经验的合作,但是我认为,找出人们最大的烦恼/奇怪的事情,以及如何克服它们是有帮助的。 这样我可以找出什么问题,我可能遇到未来:) 谢谢