是否有一个Python模块可以编写Excel 2007+文件?
我有兴趣编写一个超过65535行的文件,只有Excel 2007+支持它.
我已经和Excel 2007问题争吵好几天了.以下列出了我能想到的所有可能相关的事实:
IDetailSheet是在VBA项目中声明的具有多个方法的类,它在其类初始化程序中引发错误,因此无法实例化(使其成为抽象).
Option Explicit在所有模块中设置.
VBA项目中的十个工作表实现 IDetailSheet并干净地编译(整个项目也是如此).
CDetailSheets是在VBA项目中声明的类,它包装Collection对象并将Collection对象公开为IDetailSheet的Collection .它还公开了一些额外的方法来在所有集合中执行IDetailSheet的某些方法.
在其类初始值设定项(从Workbook _ Open事件处理程序调用并分配给全局变量)中,CDetailSheet执行以下代码以填充专用集合DetailSheets:
Dim sht as EXCEL.WorkSheet
For Each sht in ActiveWorkbook.Worksheets
If TypeOf sht is IDetailSheet Then
Dim DetailSheet as IDetailSheet
Set DetailSheet = sht
DetailSheets.Add DetailSheet, DetailSheet.Name
End If
Next sht
Run Code Online (Sandbox Code Playgroud)在某些功能区回调中,运行以下代码:
If TypeOf ActiveWorkbook.ActiveSheet is IDetailSheet Then
Dim DetailSheet as IDetailSheet
Set DetailSheet = ActiveWorkbook.ActiveSheet
DetailSheet.Refresh *[correction]*
End If
Run Code Online (Sandbox Code Playgroud)在识别出其他稳定性问题之后,所有ActiveX控件都已从工作簿中删除(最初有几十个).已创建Fluent Interface功能区以替换最初与ActiveX控件关联的功能.
公司模板中有一个Hyperion加载项,但未在此工作簿中使用.
完成所有操作后,运行工作簿时会出现以下症状: …
编辑现有的CSV文件后,单击"保存"将提示消息对话框"如果将其保存为CSV(逗号分隔),则工作簿中的某些功能可能会丢失".然后我点击"保存".之后,当我单击"关闭"关闭CSV时,再次提示消息对话框"想要将更改保存到'sample.csv'".为什么我要保存两次?怎么解决?谢谢
我在A列,1,2,3,4,5和A,B,C中有8个变量.
我的目标是过滤掉A,B,C并仅显示1-5.
我可以使用以下代码执行此操作:
My_Range.AutoFilter Field:=1, Criteria1:=Array("1", "2", "3","4","5"), _
Operator:=xlFilterValues
Run Code Online (Sandbox Code Playgroud)
但代码的作用是过滤变量1到5并显示它们.
我不会做相反的事情,但通过过滤出A,B,C并显示变量1到5,产生相同的结果
我试过这段代码:
My_Range.AutoFilter Field:=1, Criteria1:=Array("<>A", "<>B", "<>C"), _
Operator:=xlFilterValues
Run Code Online (Sandbox Code Playgroud)
但它没有用.
为什么我不能使用这段代码?
它给出了这个错误:
运行时错误1004范围类的autofilter方法失败
我怎么能这样做?
我正在尝试使用C#将自定义XML添加到打开的Excel 2007工作簿中.我使用Microsoft.Office.Interop.Excel作为接口.我发现有一个CustomXMLPart类,但我无法弄清楚如何使用它.最初我希望代码简单如下:
CustomXMLPart myXMLPart = new CustomXMLPart(xmlString);
myWorkBook.XMLCustomParts.Add(myXMLPart);
但这并不接近工作.
我尝试过在线查找示例,但是他们在讨论Packages,Addins,OpenXML,VSTO流等时非常复杂.我已经解压缩了一个合适的工作簿(xlsx)并发现它有docProps/custom.xml元素.
我只是想在保存之前将类似的custom.xml添加到新工作簿(2007).这可能吗?请注意我无法安装任何其他软件包或库.
编辑:我在调查此问题方面取得了一些进展.我相信我有正确的Office引用(COM下的Microsoft Office 12.0对象库)和Excel互操作引用(GAC下的Microsoft.Office.Interop.Excel).
声明
Microsoft.Office.Core.CustomXMLParts myCustomXMLParts;
Run Code Online (Sandbox Code Playgroud)
然而,编译
Microsoft.Office.Core.CustomXMLParts myCustomXMLParts =
Microsoft.Office.Interop.Excel.Workbook.CustomXMLParts;
Run Code Online (Sandbox Code Playgroud)
导致错误消息:错误CS0029:无法将类型"Microsoft.Office.Core.CustomXMLParts"隐式转换为"Microsoft.Office.Core.CustomXMLParts".
当我将鼠标悬停在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是在未引用的程序集中定义的,并指定程序集'office',Version = 12.0.0.0.
我的Office引用链接到Microsoft Shared/OFFICE12下的MSO.DLL,并在Properties下有Major Version 2 Minor Version 4.这有关系吗?或者是错误消息只是表明由于某种原因它没有处理这个引用?
编辑:添加COM对象"Microsoft Office 12.0对象库"似乎肯定是问题.从其他论坛帖子我发现其他人看到"Microsoft.Office.Core"的引用出现,但我只看到"Office".我已经尝试直接编辑.csproj文件,这确实给了"Microsoft.Office.Core",但它仍然无法正常工作.我能真正得出的唯一结论是我的Office 12 Professional Plus的MSO.DLL(版本(12.0.6612.1000)实际上并不包含Microsoft.Office.Core程序集,或者无论如何都不会正确地公开它们.
我在excel文件中有程序使用数据,数据有日期和时间.我想总结一下这个信息,即每小时每天都有多少用户使用这个应用程序.如何使用excel公式?
样本数据:
Jun 01, 09:03AM
Jun 01, 10:00AM
Jun 01, 10:50AM
Jun 01, 11:00AM
Jun 01, 11:26AM
Jun 02, 01:00PM
Jun 02, 03:00PM
Jun 02, 04:04PM
Jun 02, 08:00PM
Jun 02, 11:00AM
Jun 02, 12:00PM
Jun 01, 10:50AM
Jun 01, 11:00AM
Jun 02, 11:00AM
Jun 02, 12:00PM
Jun 02, 01:00PM
Jun 03, 08:00PM
Jun 03, 09:00PM
Run Code Online (Sandbox Code Playgroud) 如何使用C#将单元格聚焦到Excel VSTO中?
如何在VSTO中使用C#选择第一个单元?
请帮忙代码......
在VBA中,如何获取特定目录中具有特定扩展名的所有文件的列表?
我无法做到Application.FileSearch,因为我正在使用excel 2007
我的模块中有以下功能.
Function Colorize(myValue)
ActiveCell.Select
Selection.Font.Bold = True
Colorize = myValue
End Function
Run Code Online (Sandbox Code Playgroud)
将使用此功能的单元格应该变为粗体 - 但是,我没有收到任何错误消息,但是很遗憾,但它没有变为粗体.我错过了什么?
谢谢
我有一个.xlsx文件要编辑,我发现openpyxl可以操作Excel 2007文件.我只想更改某些单元格中的值并保持其他设置不变.
但在我浏览完文档后,我找不到编辑现有文件的示例.它只演示了读取.xlsx文件并写入新文件.
我尝试以下方式编辑现有文件,但在保存之后,文件中的样式已被删除(如字体,颜色):
from openpyxl.reader.excel import load_workbook
wb=load_workbook(r'd:\foo1.xlsx')
ws=wb.get_sheet_by_name('Bar')
ws.cell('A1').value= 'new_value'
# save the workbook to a new file to finish the editing
# but the style settings has been removed (such like font, color) in the new file
wb.save(r'd:\foo2.xlsx')
Run Code Online (Sandbox Code Playgroud) excel-2007 ×10
excel ×7
vba ×4
c# ×2
excel-vba ×2
openpyxl ×2
python ×2
excel-2010 ×1
filesystems ×1
search ×1
vsto ×1
xml ×1