Database 仅在工作簿中打印所有电子表格名称
是否可以只打印电子表格名称(选项卡底部的名称)? 我有一本手册,里面有很多唱片(超过500张,呃,这是一本音乐目录…CD,上面有什么,作曲者,指挥家,乐章,时间等等),我想打印出手册的名字,而不是全部和每一部分。 是的,我知道我很可能应该在Access中这样做,但我在64年前的一个Commidor上开始使用它,并且一直在“转换”它。最新版本是Excel2007。所以本质上它是一个使用电子表格的“2D数据库”,而不是Access中的“3D数据库”。Database 仅在工作簿中打印所有电子表格名称,database,excel,2d,excel-2007,Database,Excel,2d,Excel 2007,是否可以只打印电子表格名称(选项卡底部的名称)? 我有一本手册,里面有很多唱片(超过500张,呃,这是一本音乐目录…CD,上面有什么,作曲者,指挥家,乐章,时间等等),我想打印出手册的名字,而不是全部和每一部分。 是的,我知道我很可能应该在Access中这样做,但我在64年前的一个Commidor上开始使用它,并且一直在“转换”它。最新版本是Excel2007。所以本质上它是一个使用电子表格的“2D数据库”,而不是Access中的“3D数据库”。 很多方面。您可以在安装了模块的情况下使用Perl
很多方面。您可以在安装了模块的情况下使用Perl来实现这一点
use Spreadsheet::ParseExcel;
use strict;
my $filename = shift || "Book1.xls";
my $e = new Spreadsheet::ParseExcel;
my $eBook = $e->Parse($filename);
my $sheets = $eBook->{SheetCount};
my ($eSheet, $sheetName);
foreach my $sheet (0 .. $sheets - 1) {
$eSheet = $eBook->{Worksheet}[$sheet];
$sheetName = $eSheet->{Name};
print "Worksheet $sheet: $sheetName\n";
}
您可以在安装了模块的情况下使用Perl来实现这一点
use Spreadsheet::ParseExcel;
use strict;
my $filename = shift || "Book1.xls";
my $e = new Spreadsheet::ParseExcel;
my $eBook = $e->Parse($filename);
my $sheets = $eBook->{SheetCount};
my ($eSheet, $sheetName);
foreach my $sheet (0 .. $sheets - 1) {
$eSheet = $eBook->{Worksheet}[$sheet];
$sheetName = $eSheet->{Name};
print "Worksheet $sheet: $sheetName\n";
}
使用VBA,您可以非常轻松地将工作表名称列表转储到工作簿中的新工作表中
Sub PrintSheetNames()
i=1
For Each sht in Sheets
Cells(i,1).Value = sht.Name
i=i+1
Next
End Sub
转到任何空白工作表,然后运行此宏。它将输出第一列中的所有工作表名称。然后,您可以只打印列表。使用VBA,您可以非常轻松地将工作表名称列表转储到工作簿中的新工作表中
Sub PrintSheetNames()
i=1
For Each sht in Sheets
Cells(i,1).Value = sht.Name
i=i+1
Next
End Sub
转到任何空白工作表,然后运行此宏。它将输出第一列中的所有工作表名称。然后,您可以只打印列表。假设您使用VBA而不是.NET,您可以编写类似的子程序。相同的对象和名称在.NET中可用
Sub ShowTabNames()
Dim s As Worksheet
Dim tabs As String
For Each s In ActiveWorkbook.Worksheets
If Len(tabs) > 0 Then tabs = tabs & ", "
tabs = tabs & s.Name
Next
MsgBox tabs
End Sub
假设您使用VBA而不是.NET,您可以编写类似的子程序。相同的对象和名称在.NET中可用
Sub ShowTabNames()
Dim s As Worksheet
Dim tabs As String
For Each s In ActiveWorkbook.Worksheets
If Len(tabs) > 0 Then tabs = tabs & ", "
tabs = tabs & s.Name
Next
MsgBox tabs
End Sub
您可以与Excel工作簿建立OLEDB连接,然后调用GetOleDbSchemaTable以获取所有表的列表,这些表只是Excel工作表的列表
ExcelConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,新对象[]{null,null,null,“TABLE”}) 您可以与Excel工作簿建立OLEDB连接,然后调用GetOleDbSchemaTable以获取所有表的列表,这些表只是Excel工作表的列表
ExcelConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,新对象[]{null,null,null,“TABLE”}) 您可以在安装了模块的情况下使用Python执行此操作:
import xlrd, sys
filename = (sys.argv[1:2] or ['Book1.xls'])[0]
book = xlrd.open_workbook(filename, on_demand=True)
for name in book.sheet_names():
print name # name is in Unicode; may need encoding
注意:
on_demand
arg在0.7.1版中是新的;它不需要预先解析所有工作表,从而节省时间和内存。如果您有早期版本,请升级或删除上面代码段中的随需应变on\u demand=True
。您可以在安装模块的情况下使用Python执行此操作:
import xlrd, sys
filename = (sys.argv[1:2] or ['Book1.xls'])[0]
book = xlrd.open_workbook(filename, on_demand=True)
for name in book.sheet_names():
print name # name is in Unicode; may need encoding
注意:
on_demand
arg在0.7.1版中是新的;它不需要预先解析所有工作表,从而节省时间和内存。如果您有早期版本,请升级或删除上面代码段中的on_demand=True
。以在sht上启用Intellisense。将Dim sht As Worksheet
添加到完成此操作的子组件顶部!我非常感谢你!非常感谢。{:o)在sht上启用Intellisense。将Dim sht作为工作表添加到Sub顶部。这样做了!非常感谢!非常感谢。{:o)ParseExcel将允许您运行单个工作表并进行更深入的处理。这里是对将XLS转换为CSV文本文件的另一个问题的参考…ParseExcel将允许您运行单个工作表并进行更深入的处理。这里是对将XLS转换为CSV文本文件的另一个问题的参考。。。