- nicehost
-
Microsoft Excel 提供了多个对话框工作表控件,您可以使用这些工作表控件来帮助选择数据。例如,下拉框、列表框、微调框和滚动条都可用于选择列表中的项目。
通过向工作表添加控件并将其链接到单元格,您可以返回控件当前位置的数值。可以将该数值和 INDEX 函数结合使用从列表中选择不同项目。
下列过程演示了下拉框、列表框、微调框和滚动条的用法。以下示例使用同一列表、单元格链接和 INDEX 函数。
要使用 Microsoft Office Excel 2007 中的窗体控件,您必须启用“开发工具”选项卡。为此,请按照下列步骤操作:
单击“Office 按钮”,然后单击“Excel 选项”。
在“常用”选项卡上,单击以选中“在功能区显示‘开发工具"选项卡”复选框,然后单击“确定”。
回到顶端
如何设置列表、单元格链接和 INDEX
在新工作表中的 H1:H20 区域中键入下列项目:
H1:溜冰鞋
H2:VCR
H3:桌子
H4:杯子
H5:汽车
H6:洗衣机
H7:火箭发射器
H8:自行车
H9:电话
H10:蜡烛
H11:糖果
H12:扬声器
H13:衣服
H14:毯子
H15:干衣机
H16:吉他
H17:干衣机
H18:工具箱
H19:VCR
H20:硬盘
在单元格 A1 中,键入以下公式:
=INDEX(H1:H20,G1,0)
回到顶端
列表框示例
要在 Microsoft Office Excel 2003 和早期版本的 Excel 中添加列表框,请单击“窗体”工具栏上的“列表框”按钮。然后,创建包含单元格 B2:E10 的列表框。
如果未显示“窗体”工具栏,请指向“视图”菜单上的“工具栏”,然后单击“窗体”。
要在 Excel 2007 中添加列表框,请依次单击“开发工具”选项卡、“插入”,然后单击“窗体控件”部分中的“列表框”。
右键单击列表框,然后单击“设置控件格式”。键入以下信息,然后单击“确定”。
要指定列表的区域,请在“数据源区域”框中键入 H1:H20。
要在单元格 G1 中键入数值(根据在列表中选择的项目),请在“单元格链接”框中键入 G1。
注意:INDEX() 公式使用 G1 中的值返回相应的列表项目。
在“选定类型”下,确保选择“单选”选项。单击“确定”。
注意:仅在您使用 Microsoft Visual Basic for Applications 过程返回列表值时,“复选”和“扩展”选项才有用。另请注意,使用“三维阴影”复选框可使列表框具有三维外观。
列表框应显示项目列表。要使用列表框,请单击任意单元格,这样不会选择列表框。如果您单击列表中的某一项目,单元格 G1 将更新为一个数字,以指示所选项目在列表中的位置。单元格 A1 中的 INDEX 公式使用此数字显示项目的名称。
回到顶端
组合框示例
要在 Excel 2003 和早期版本的 Excel 中添加组合框,请单击“窗体”工具栏上的“组合框”按钮。
要在 Excel 2007 中添加组合框,请依次单击“开发工具”选项卡、“插入”,然后单击“窗体控件”部分中的“组合框”。
创建包含单元格 B2:E2 的对象。
右键单击组合框,然后单击“设置控件格式”。输入以下信息,然后单击“确定”:
要指定列表的区域,请在“数据源区域”框中键入 H1:H20。
要在单元格 G1 中键入数值(根据在列表中选择的项目),请在“单元格链接”框中键入 G1。
注意:INDEX 公式使用 G1 中的值返回相应的列表项目。
在“下拉显示项数”框中,键入 10。此条目决定在必须使用滚动条查看其他项目之前显示的项目数。
注意:“三维阴影”复选框是可选的;使用它可使下拉框或组合框具有三维外观。
下拉框或组合框应显示项目列表。要使用下拉框或组合框,请单击任意单元格,这样不会选择对象。如果您单击下拉框或组合框中的某一项目,单元格 G1 将更新为一个数字,以指示所选项目在列表中的位置。单元格 A1 中的 INDEX 公式使用此数字显示项目的名称。
回到顶端
微调框示例
要在 Excel 2003 和早期版本的 Excel 中添加微调框,请单击“窗体”工具栏上的“微调框”按钮,然后创建包含单元格 B2:B3 的微调框。将微调框的大小调整为大约列宽度的四分之一。
要在 Excel 2007 中添加微调框,请依次单击“开发工具”选项卡、“插入”,然后单击“窗体控件”部分中的“数值调节钮”。
右键单击微调框,然后单击“设置控件格式”。输入以下信息,然后单击“确定”:
在“当前值”框中,键入 1。
此值将初始化微调框,以便 INDEX 公式指向列表中的第一个项目。
在“最小值”框中,键入 1。
此值会将微调框的顶部限制为列表中的第一个项目。
在“最大值”框中,键入 20。
此数字指定列表中条目的最大数。
在“步长”框中,键入 1。
此值控制微调框控件将当前值增大多少。
要在单元格 G1 中键入数值(根据在列表中选择的项目),请在“单元格链接”框中键入 G1。
单击任意单元格,这样不会选择微调框。如果您单击微调框中的向上控件或向下控件,单元格 G1 将更新为一个数字,以指示微调框的当前值与微调框步长的和或差。然后,此数字将更新单元格 A1 中的 INDEX 公式以显示下一项目或上一项目。
如果您在当前值为 1 时单击向下控件,或者在当前值为 20 时单击向上控件,则微调框值不会更改。
回到顶端
滚动条示例
要在 Excel 2003 和早期版本的 Excel 中添加滚动条,请单击“窗体”工具栏上的“滚动条”按钮,然后创建高度为单元格 B2:B6 且宽度大约为列宽度的四分之一的滚动条。
要在 Excel 2007 中添加滚动条,请依次单击“开发工具”选项卡、“插入”,然后单击“窗体控件”部分中的“滚动条”。
右键单击滚动条,然后单击“设置控件格式”。键入以下信息,然后单击“确定”。
在“当前值”框中,键入 1。
此值将初始化滚动条,以便 INDEX 公式指向列表中的第一个项目。
在“最小值”框中,键入 1。
此值会将滚动条的顶部限制为列表中的第一个项目。
在“最大值”框中,键入 20。此数字指定列表中条目的最大数。
在“步长”框中,键入 1。
此值控制滚动条控件将当前值增大多少。
在“页步长”框中,键入 5。此条目控制当您单击滚动条中滚动框的任意一边时将当前值增大多少。
要在单元格 G1 中键入数值(根据在列表中选择的项目),请在“单元格链接”框中键入 G1。
注意:“三维阴影”复选框是可选的;使用它可使滚动条具有三维外观。
单击任意单元格,这样不会选择滚动条。如果您单击滚动条中的向上控件或向下控件,单元格 G1 将更新为一个数字,以指示滚动条的当前值与滚动条步长的和或差。此数字在单元格 A1 中的 INDEX 公式中使用,以显示当前项目的下一项目或上一项目。
您还可以拖动滚动条以更改值,或单击滚动条中滚动框的任意一边以将该值增大 5(“页步长”值)。如果您在当前值为 1 时单击向下控件,或者在当前值为 20 时单击向上控件,则滚动条不会更改。
在EXCEL中列表框中的“数据源区域”、“单元格链接”分别有什么不同的作用
提问者: mahedu - 助理 三级
最佳答案
假定在A1单元格中画一个“列表框”,列表框中有四个数据列表:北京、天津、上海、重庆。
在列表框中分别选择“北京、天津、上海、重庆”,在单元格B1中显示中对应显示值“1、2、3、4”。
在A2:B5单元格中列表:
A列B列
北京
天津
上海
重庆
右击“列表框”,执行快捷菜单命令“设置控件格式”,单击“控制”选项卡,“数据源区域”中输入“$A$2:$A$5”(不含引号)、“单元格链接”中输入“$B$1”,“选定类型”中单击选中“单选”,单击“确定”按钮。
此时,拉动A1的列表框右侧垂直滚动条,单击选择列表框中的数据“北京”,在B1单元格中显示数据“1”。类推。
希望能帮助你,体会EXCEL中列表框中的“数据源区域”、“单元格链接”的作用!
- 豆豆staR
-
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Reflection;
namespace ExcelPrj
{
/// <summary>
/// Excel 系统中的主文件Excel.exe 本身就是 COM 组件,通过在.NET 项目中引用Exel.exe 文件可以实现对Excel 的功能控制
/// 与COM 组件相互操作是通过使用"包装类"(Wrapper Class) 和"代理"(Proxy) 的机制实现的.包装类使.NET 程序可以识别COM 组件提供的接口,而代理类则是提供对 COM 接口的访问
/// </summary>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
ExportTasks(Bind(), dataGridView1);
}
//如果 Excel 安装在计算机上,侧导出表格内容到 Excel
public void ExportTasks(DataSet TasksData, DataGridView TasksGridView)
{
// 定义要使用的Excel 组件接口
// 定义Application 对象,此对象表示整个Excel 程序
Microsoft.Office.Interop.Excel.Application excelApp = null ;
// 定义Workbook对象,此对象代表工作薄
Microsoft.Office.Interop.Excel.Workbook workBook;
// 定义Worksheet 对象,此对象表示Execel 中的一张工作表
Microsoft.Office.Interop.Excel.Worksheet ws=null;
//定义Range对象,此对象代表单元格区域
Microsoft.Office.Interop.Excel.Range r;
int row = 1; int cell = 1;
try
{
//初始化 Application 对象 excelApp
excelApp = new Microsoft.Office.Interop.Excel.Application();
//在工作薄的第一个工作表上创建任务列表
workBook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
ws =(Worksheet)workBook.Worksheets[1];
// 命名工作表的名称为 "Task Management"
ws.Name = "Task Management";
#region 创建表格的列头
// 遍历数据表中的所有列
foreach (DataGridViewColumn cs in TasksGridView.Columns)
{
// 假如并不想把主键也显示出来
if (cs.HeaderText != "编号")
{
ws.Cells[row, cell] = cs.HeaderText;
r = (Range)ws.Cells[row, cell];
ws.get_Range(r, r).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
//此处用来设置列的样式
cell++;
}
}
// 创建行,把数据视图记录输出到对应的Excel 单元格
for (int i = 2; i < TasksData.Tables[0].Rows.Count; i++)
{
for (int j = 1; j < TasksData.Tables[0].Columns.Count; j++)
{
ws.Cells[i, j] = TasksData.Tables[0].Rows[i][j].ToString();
// r = (Range)ws.Cells[i,j];
Range rg = (Range)ws.get_Range(ws.Cells[i, j], ws.Cells[i, j]);
rg.EntireColumn.ColumnWidth = 20;
// rg.Columns.AutoFit();
rg.NumberFormatLocal = "@";
}
}
#endregion
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
//显示 Excel
excelApp.Visible = true;
}
private void button5_Click(object sender, EventArgs e)
{
DataSet ds = Bind();
dataGridView1.DataSource = ds.Tables[0];
}
private DataSet Bind()
{
SqlConnection conn = new SqlConnection("Server=.;Database=testManage;Integrated Security=SSPI");
SqlDataAdapter da = new SqlDataAdapter("select FNumber,FExamNum,FName,FSex,FJobAdd,FCardID,FBirDate from stuInfo", conn);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
private void button2_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "请选择将导出的EXCEL文件存放路径";
sfd.FileName = System.DateTime.Now.ToShortDateString() + "-学生信息";
sfd.Filter = "Excel文档(*.xls)|*.xls";
sfd.ShowDialog();
if (sfd.FileName != "")
{
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
if (excelApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的机器未安装Excel");
}
else
{
Microsoft.Office.Interop.Excel.Workbooks workbooks = excelApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet =(Worksheet) workbook.Worksheets[1];
DataSet ds=Bind();
for (int i = 1; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 1; j < ds.Tables[0].Columns.Count;j++ )
{
if (i == 1)
{
worksheet.Cells[i, j] = dataGridView1.Columns[j].HeaderText;
}
worksheet.Cells[i+1, j] = ds.Tables[0].Rows[i][j].ToString();
}
}
//保存方式一:保存WorkBook
//workbook.SaveAs(@"F:CData.xls",
// Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,
// Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value,
// Missing.Value,Missing.Value);
//保存方式二:保存WorkSheet
// worksheet.SaveAs(@"F:CData2.xls",
// Missing.Value, Missing.Value, Missing.Value, Missing.Value,
// Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
////保存方式三
//workbook.Saved = true;
//workbook.SaveCopyAs(sfd.FileName);
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
worksheet = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
workbook = null;
workbooks.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
workbooks = null;
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
excelApp = null;
MessageBox.Show("导出Excel完成!");
}
}
}
private void button4_Click(object sender, EventArgs e)
{
string strExcelFileName = @"F:\2007-07-16-学生信息.xls";
string strSheetName = "sheet1";
#region Aspnet 操作Excel 正确
////源的定义
//string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + strExcelFileName + ";Extended Properties ="Excel 8.0;HDR=NO;IMEX=1"";
////Sql语句
//string strExcel = "select * from [" + strSheetName + "$]";
////定义存放的数据表
//DataSet ds = new DataSet();
////连接数据源
//OleDbConnection conn = new OleDbConnection(strConn);
//conn.Open();
////适配到数据源
//OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, conn);
//adapter.Fill(ds,"res");
//conn.Close();
//// 一般的情况下. Excel 表格的第一行是列名
//dataGridView2.DataSource = ds.Tables["res"];
#endregion
#region COM 组件读取复杂Excel
Microsoft.Office.Interop.Excel.Application excelApp = null;
Microsoft.Office.Interop.Excel.Workbook workBook;
Microsoft.Office.Interop.Excel.Worksheet ws = null;
try
{
excelApp = new Microsoft.Office.Interop.Excel.Application();
workBook = excelApp.Workbooks.Open(@"F:\Book1.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
ws = (Worksheet)workBook.Worksheets[1];
//Excel 默认为 256 列..
MessageBox.Show(ws.Cells.Columns.Count.ToString());
excelApp.Quit();
}
catch (Exception ex)
{
throw ex;
}
#endregion
}
}
}
copy来的
另外,虚机团上产品团购,超级便宜