Tag: c#

如果未安装Excel,如何创buildExcel的实例

在我的C#应用​​程序,在Excel Interop DLL(作为参考)的帮助下,我正在阅读/写入Excel文件。 如果我把这个程序移动到没有安装office / excel的系统(想想干净的机器),我打错了。 System.Runtime.InteropServices.COMException(0x80040154):由于以下错误,检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:80040154类未注册(exception来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG ))。 预计以上错误,因为目标机器上没有excel。 我的问题是,除了在目标机器上注册Interop dll之外,是否还有其他方法可以使用我的程序?

我如何使用ExcelLibrary更改Excel文件中的单元格样式?

任何人都可以帮助我ExcelLibrary ? 我想设置单元格背景和字体颜色,但我不知道该怎么做。 我尝试访问单元格样式,但是我没有find它。 任何人有任何想法?

如何解决此Microsoft.Office.Excel方法调用中的歧义?

我在C#代码中使用office 2007 excel工作表函数。 VS2010发出这个警告 警告3方法“Microsoft.Office.Interop.Excel._Worksheet.Activate()”和非方法“Microsoft.Office.Interop.Excel.DocEvents_Event.Activate”之间的歧义。 使用方法组。 D:\ EXLANEDB01p \ dev \ libraries \ EXCEL \ Excel.cs 531 95 EXCEL 我如何解决这个问题? 电话是 xSheet.Activate(); 其中xSheet在调用中作为ref传递 ref Microsoft.Office.Interop.Excel.Worksheet xSheet

为使用ExcelPackage创build的Excel单元格设置货币格式

如何设置用ExcelPackage创build的Excel单元格的货币格式? worksheet.Cell(i, 7).Value = item.Price.ToString();

使用EPPlus按expression式进行条件格式化

我试图通过使用EPPlus的条件格式化function来格式化一些范围。 我读了很多文档,但是没有提到关于条件格式expression式的内容。 我很困惑。 不知道如何使用该function。 这是我的一些问题: 我们可以使用多个范围放入参数ExcelAddress(如“H1:H17,L1:L17,”AA1:AA17“) 公式是放在公式属性是不是像互操作Excel或不? (就像我们使用“A1”来表示当前单元格在interop excel中格式化一样) 你可以给我一个使用条件格式expression式的小演示代码段。 谢谢! (对不起,我写了糟糕的英语)

用EPPlus生成Excel文件失败

当我尝试使用EPPlus生成Excel文件时,Excel给我以下错误信息: Excel无法打开文件“myfilename.xlsx”,因为文件格式或文件扩展名无效。 validation文件是否已损坏,文件扩展名是否与文件格式匹配。 这是我的代码: public ActionResult Index() { using (ExcelPackage package = new ExcelPackage()) { // I populate the worksheet here. I'm 90% sure this is fine // because the stream file size changes based on what I pass to it. var stream = new MemoryStream(); package.SaveAs(stream); string fileName = "myfilename.xlsx"; string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; […]

如何在创buildExcel文件时正确设置列宽? (列属性)

我正在使用标准库 using Excel = Microsoft.Office.Interop.Excel; 这就是我创buildExcel的一小部分代码: //Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; Excel._Application xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //add data xlWorkSheet.Cells[1, 1] = ""; xlWorkSheet.Cells[1, 2] = "Student1"; xlWorkSheet.Cells[1, 3] = "Student2"; xlWorkSheet.Cells[1, 4] = "Student3"; 问题是有时单元格的大小可能小于文本的大小。 我试过这个: Excel.Range chartRange; chartRange.EntireColumn.ColumnWidth = 31.43; 它工作正常,但我需要分别为每个列设置此属性。 我怎么能这样做?

如何将自定义XML添加到使用C#打开的Excel 2007工作簿?

我正在尝试使用C#将一个自定义XML添加到打开的Excel 2007工作簿中。 我正在使用Microsoft.Office.Interop.Excel作为接口。 我发现有一个CustomXMLPart类,但我不知道如何使用它。 最初我希望代码是这样简单的: CustomXMLPart myXMLPart = new CustomXMLPart(xmlString); myWorkBook.XMLCustomParts.Add(myXMLPart); 但这并不是接近工作。 我试着在网上find例子,但他们是复杂的谈论包,加载项,OpenXML,VSTOstream等。我已经解压缩一个合适的工作簿(xlsx),并发现它有docProps / custom.xml元素。 我只想在保存之前添加一个类似的custom.xml到新的工作簿(2007)。 这可能吗? 请注意我不能安装任何额外的软件包或库。 编辑:我已经做了更多的调查这个问题的进展。 我相信我有正确的Office引用(COM下的Microsoft Office 12.0对象库)和Excel互操作引用(GAC下的Microsoft.Office.Interop.Excel)。 声明 Microsoft.Office.Core.CustomXMLParts myCustomXMLParts; 编译,但是 Microsoft.Office.Core.CustomXMLParts myCustomXMLParts = Microsoft.Office.Interop.Excel.Workbook.CustomXMLParts; 导致错误消息:错误CS0029:无法隐式地将typesMicrosoft.Office.Core.CustomXMLParts转换为Microsoft.Office.Core.CustomXMLParts。 当我将鼠标hover在Excel CustomXMLParts属性上时,声明返回一个CustomXMLParts对象,这在某种意义上是Microsoft.Office.Core.CustomXMLParts对象,但与Office程序集中的对象不完全相同。 所以在这里显然有一些不兼容性,但我无法解决它。 我安装了Microsoft Office Professional Plus 2007(12.0.6612.1000)和Office 2007主互操作程序集(12.0.4518.1014)。 编辑:我相当肯定,这是Office DLL的问题。 在添加引用上,我看到“Microsoft Office 12.0对象库”,并可以添加它没有任何错误。 它在参考下显示为“办公室”。 然而,它似乎是不可见的,而仍然声称Microsoft.Office.Core定义在未引用的程序集,并指定程序集“办公室”,版本= 12.0.0.0。 我的Office引用已链接到Microsoft Shared / OFFICE12下的MSO.DLL,并具有属性下的主版本2次版本4。 这很重要吗? 或者是错误信息只是表明它没有处理这个引用的原因? 编辑:添加COM对象“Microsoft […]

添加自动筛选和sorting导致Excel崩溃

我正在开发一个应用程序,您可以使用OpenXML将一些数据导出到Excel文件。 除了自动filter之外,一切正常。 这个想法是将一个自动filter添加到数据的主体,以便用户自动控制过滤和sorting数据。 所以在代码中,我做了这样的事情: var filter = new AutoFilter() { Reference = string.Format("{0}:{1}", topLeftCellReference, bottomRightCellReference ) }; worksheet.AppendChild(filter); 在导出的XLSX中,它看起来像这样: <x:autoFilter ref="A4:L33" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" /> 并将其添加到sheetData和mergeCells之间的工作表中。 我可以在Excel中打开这个filter,它工作正常。 预计如果您尝试对列进行sorting,该列将进行sorting,然后Excel崩溃。 保存并重新加载文件(强制Excel清理所有内容)不能解决问题。 但是,如果你先应用一个filter(比如过滤一个列到> 10 ,然后删除那个filter,你现在可以sorting而不会崩溃。我应用一个filter并删除它之后保存了一个文件,现在这个文件很好,但是看着“修复”文件的XML,我没有看到任何明显的差异。 有没有人知道什么可能会导致这个问题? 除了将其添加到工作表之外,在应用自动filter时还有其他事情要做吗? 注意:我们正在使用Excel 2010(版本14.0.7153.5000) 下面是一个示例文件 (点击下载,它将以.zip下载,重命名为.xlsx以在Excel中打开。启用编辑,select其中一列并尝试sorting)。 编辑 :玩这个更多。 如果您在Excel中重新保存文件,它仍然是坏的。 但是,如果您首先应用filter(然后清除它),然后在Excel中重新保存,则会得到一个工作文件。 仔细观察两个文件(仍然损坏的resaved文件和现在工作的文件),我注意到在应用(和清除)filter之后,这个额外的位被添加到工作簿中: <x:definedNames> <x:definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">'Sheet 1'!$A$1:$E$11</x:definedName> </x:definedNames> 不知道这可能是不是…

以编程方式创buildExcel 2007工作表

我正尝试以编程方式创buildExcel 2007文档。 现在,我find了两种方法: 手动创buildXML,如本文所述 使用ExcelPackage等第三方库。 目前,我使用ExcelPackage,它有一些非常严重的缺陷和问题。 因为我不需要创build过于复杂的Excel工作表(最“复杂”的是我明确需要设置一个单元格types为数字或文本),我正在寻找接下来的选项1,但我只是想知道是否有任何其他良好和受支持的方式来生成Excel 2007表? 奖励点数,如果他们可以创build,而不必将其保存到硬盘,即生成并直接输出到一个stream。 .net 3.0是这里的目标,没有3.5善良:( 编辑:到目前为止感谢。 XML SDK确实只有3.5,但是俄罗斯的Roulet … erm … COM Interop也是我想尽可能避免的事情,特别是因为Excel 2007有一些复杂但是很容易创build的文档格式。 我会看看发布的各种链接和提示。