Excel提供了至少三种设置数据的方式,因此您的报告和分析可以轻松地将其用作可靠的数据源。
Excel提供了三种在电子表格中排列数据的常规方法,因此您可以将其用作工作表公式的数据库:
简单(或“灰色单元格”)表,自Excel 2.0起就使用。
Excel 2007中引入的Excel Tables。
Excel 2010中引入的具有表格报表布局的数据透视 表。
我将其中任何一个称为“数据库”,可能会冒犯数据库专家。毕竟,这三个电子表格数据库易于设置和使用...根本不像“真实”数据库。即使这样,这些数据库也可以像Excel公式的真实数据库一样工作。如果您的报告和分析可以从这些类型的电子表格数据库之一中获取数据,则可以显着改善报告和分析。
在本文中,我将介绍每种类型的电子表格数据库。然后,在以后的文章中,我将更详细地介绍。
电子表格数据库1:简单表
20多年来,直到Excel 2007,Excel用户只能将“简单表”用作电子表格数据库。这种类型的数据库有两种样式:水平和垂直。
简单表电子表格数据库,水平样式
水平电子表格数据库的日期显示在一个标题行中,如下图所示。
通常,日期列使用每月“存储桶”,但它们可以使用所需的任何时间段。“代码”列可以包含总帐帐号,SKU,员工代码等。
为了说明该数据库提供的功能,请查看我的 Excel仪表板模板,这些模板从此类Excel数据库中获取其数据。要更新这些模板中每个期间的报告,只需更新数据库,在一个单元格中更改报告日期,然后重新计算Excel。如果您依靠Excel数据库进行其他报告和分析,则所有报告都可以轻松更新。
灰色的行和列是简单表的最明显特征。这些边界牢房起着至关重要的作用。这是如何做:
设置简单表时,需要为所有键范围定义范围名称,然后公式仅使用这些范围名称来引用表-决不使用单元格引用。这些范围名称都仅引用灰色边框单元格-从未引用数据的单元格。
为了说明这一点,该数据库位于一个名为Horiz的工作表上,它使用以下四个范围名称:
代码 = Horiz!$ A $ 3:$ A $ 10
描述 = Horiz!$ B $ 3:$ B $ 10
日期 = Horiz!$ C $ 2:$ G $ 2
数据 =水平!$ C $ 3:$ G $ 10
这是使用此设计的关键要求:将数据行或列添加到简单表中时,总是在灰色单元格之间插入行和列。这样,您始终知道使用该表的所有公式都会“看到”您的新数据。
简单表电子表格数据库,垂直样式
该图显示了一个垂直的Simple-Table Excel数据库。像大多数数据库一样,每个字段仅包含一列数据。
作为简短描述,我将其称为垂直数据库,因为其日期是垂直显示的。
在这里,名称很容易分配。只需选择范围A2:D12。接着...
在Classic Excel中,选择“插入”,“名称”,“创建...”。
在New Excel中,选择“公式”,“定义的名称”,“从选择中创建...”
...然后在“创建名称”对话框中,确保仅指定“顶行”;然后选择确定。
电子表格数据库2:Excel表
Excel 2007引入了一项主要的新功能:Excel表。
设置Excel表(或仅设置“表”)时,Excel会自动命名数据的每一列。同样,当您向表中添加相邻的行或列时,Excel也会自动扩展表以包括此新数据。
这与简单表相反,在简单表中,我们必须执行添加边框单元格和定义范围名称所需的手动步骤。
要创建此表,请设置数据,如在本示例中所见。选择标题和数据;选择“插入”,“表”,“表”;在“创建表”对话框中,确保选中“我的表有标题”;然后选择确定。
Excel会自动设置表格的格式并为其命名,就像它为新工作表命名一样。也就是说,它分配诸如Table1,Table2等之类的名称。与工作表一样,您可以重命名每个Table。
在公式中,当您引用表或简单表中的数据列时,将使用名称,而不是单元格引用。例如,如果要对“金额”列求和,则公式为:
简单表:= SUM(Amount)
Excel表格:= SUM(Table1 [Amount])
当然,如果重命名Table1,则第二个公式中对Table1的引用将自动更新。
电子表格数据库3:数据透视表的表格布局
数据透视表具有许多重要的优点,这就是为什么它们如此受欢迎的原因。但是它们也有很大的局限性,这就是为什么我过去很少使用它们。
好处是显而易见的。数据透视表为Excel用户提供了强大的功能,使他们可以在Excel中浏览关系数据,并将排序,汇总和过滤后的数据切片返回到电子表格。我不知道有任何其他产品可以提供这种功能。
另一方面,从我的角度来看,数据透视表似乎始终只是连接到Excel的报表生成器。它们提供了许多报告功能,但只有一个电子表格功能(GETPIVOTDATA)允许工作表功能使用数据透视表数据。因此,再次(我认为),Excel用户一直比在标准Excel报表中使用来自一个或多个数据透视表的数据的工作更加辛苦。
但最后,在Excel 2010中,Microsoft添加了Excel用户使用数据透视表作为标准报表和分析的真正有用数据源所需的大多数功能。因为我们可以解决缺少的功能,所以我们最终可以将数据透视表用作强大而庞大的电子表格数据库。
package bis.excelimport java.io.File
import java.io.FileInputStream
import java.io.InputStream
import java.util.ArrayList
import java.util.List
import java.util.Map
import java.util.TreeMap
import jxl.Sheet
import jxl.Workbook
public class Excel {
@SuppressWarnings("unchecked")
public List addCust(File file){
List list=new ArrayList()
List list2=new ArrayList()
Workbook rwb=null
try {
List list1=new ArrayList()
InputStream is=new FileInputStream(file)//读取文件(所要导入excel的保存目录,如:f:\\a.xls)
rwb=Workbook.getWorkbook(is)//创建工作薄
Sheet rs=rwb.getSheet(0)//读取excel中的第一个工作表(默认新建excel下面有sheet1,sheet2,sheet3)
int cellCount=rs.getColumns()//获取Sheet表中所包含的总列数
int rowCount=rs.getRows()//获取Sheet表中所包含的总行数
for(int m=0m<cellCountm++){//将表的第一行数据保存到list1中(列名),即id,name ,age
String cell=rs.getCell(m,0).getContents()
list1.add(cell)
}
for(int i=1i<rowCounti++){//获取值
Map map=new TreeMap()
for(int j=0j<cellCountj++){
map.put(list1.get(j),rs.getCell(j,i).getContents())//将值以键/值对方式保存到map对象中即(id:1,name:zhangsan,age:18)
}
list.add(map)//将值保存到list中
//System.out.println(list.get(i-1))
}
list2.add(list1)//将表头(id,name,age)保存到list2中
list2.add(list)//将值保存到list2中
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}finally{
rwb.close()
}
return list2
}
public void tosql(){
List list=addCust(file)//file:所要导入excel的保存目录,如:f:\\a.xls
Map map=new HashMap()
String[] values=new String[ls2.size()]//保存id,name,age 值
for (int i =0i <ls2.size()i++) {
map=(Map)ls2.get(i)
String value=""
id=(String)map.get("id")
name=(String)map.get("name")
age=(String)map.get("age")
value=id+""+name+""+age
values[i]=value
}
}
}
这是段读取excel表数据的代码,在tosql方法中调用addCust方法读取excel表,最后把所有行的id,name,age值保存到了values数组中,也可以保存到类中,如果你会对数据库 *** 作的话,
后面的你自己弄下就行了,不会的话留言,我晚上在告诉你,我现在上班呢,时间有限,只能写这么多了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)