写作网站投稿赚钱/百度网首页登录入口
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
Excel的基本操作步骤:
1、打开Excel:定义了一个Application对象:
Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();
注意:Application对象的Visible属性决定了在运行时是否显示Excel,如果为true,就显示;如果为false则不显示,默认为false。
2、打开工作簿:通常使用Workbooks的Open方法来打开一个现有文档,例如图21--2中打开Northwind.xls:
Workbook Wbook = xls.Workbooks.Open("c:\\lessons\\Northwind.xls");
3、得到所有工作表的集合Worksheets:
Worksheets Wsheets = (Worksheets)Wbook.Worksheets;
4、单个的工作表Worksheet,单个的工作表可以通过两种方式获得,比如得到图21-2中的产品表:
Worksheet Wsheet =Worksheets[序号];,如Worksheets[1]
或者
Worksheet Wsheet =Worksheets[工作表名];,如Worksheets["产品"]
还可以略过Worksheets:
Worksheet Wsheet = Wbook.Worksheets[1];
5、定义并获得一个Worksheet后,就可以操作对应表里面的数据。
Worksheet的Rows属性和Columns属性分别对应了行和列的集合。使用Worksheet.Rows.Count 和 worksheet.Columns.Count 获得工作表的行数和列数,这两个数字对应Excel97-2003版本文件(*.xls文件)分别是 65535 和 256;对于Excel2007及以后版本(*.xlsx文件)是1048576 和16384。要想获得里面的数据,必须对rows和columns进行遍历,但是,这两个数字实在是太大了,通常使用:
Worksheet.UsedRange.Columns.Count 和 Worksheet.UsedRange.Rows.Count
来获得有效使用的行数和列数。
通过 Worksheet.Cells[行号,列号].Value 即可获得对应单元格的值
但是需要注意的是,如果那个单元格为空,会引发错误,可以先做判断值是否为null。
注意:Excel中的索引号是从1开始的。
6、最后,别忘了关闭打开的Excel:
xls.Quit();
【例 21.1】【项目:code21-001】读取Excel工作表数据。
使用到的xls文件是图21-2中的Northwind.xls。
在窗体上放置1个ListView控件,名称为lvExel,它的View属性为Details。
具体代码如下:
//载入数据
private void Button1_Click(object sender, EventArgs e)
{
string filename;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "表格文件|*.xls;*.xlsx";
if(ofd.ShowDialog()!= DialogResult.OK)
{
return;
}
else
{
filename = ofd.FileName;
lvExcel.Items.Clear();
}
Label1.Text = filename;
//定义一个Application
Microsoft.Office.Interop.Excel.Application xls = new Microsoft.Office.Interop.Excel.Application();
//打开Excel文档
Workbook Wbook = xls.Workbooks.Open(filename);
//定义Worksheet
Worksheet Wsheet;
//将Worksheet设置为第一个工作表
Wsheet = Wbook.Worksheets[1];
//或者
//Wsheet = Wbook.Worksheets["产品"];
//最大列数
int maxColumn;
//最大行数
int maxRow;
//第一行数据作为列表头
if( Wsheet.Rows.Count > 1)
{
lvExcel.Columns.Clear();
//最大列数设置为有效列数
maxColumn = Wsheet.UsedRange.Columns.Count;
//最大行数设置为有效行数
maxRow = Wsheet.UsedRange.Rows.Count;
//循环获得第一行的单元格内容
for(int i= 1;i<= maxColumn;i++)
{
//设置列表头,需要判断是否是Nothing
if (Wsheet.Cells[1, i].Value == null)
//无数据
lvExcel.Columns.Add("(空)");
else
lvExcel.Columns.Add(Convert.ToString(Wsheet.Cells[1, i].Value));
}
//从第二行开始的行作为数据
for(int j= 2;j<= maxRow;j++)
{
ListViewItem Lv = new ListViewItem();
string LvText;
if (Wsheet.Cells[j, 1].Value==null)
LvText = "(空)";
else
LvText = Convert.ToString(Wsheet.Cells[j, 1].Value);
Lv.Text = LvText;
string subLvText;
for(int k = 2;k<= maxColumn;k++)
{
if (Wsheet.Cells[j, k].Value == null)
subLvText = "(空)";
else
subLvText = Convert.ToString(Wsheet.Cells[j, k].Value);
Lv.SubItems.Add(subLvText);
}
//添加到ListView中
lvExcel.Items.Add(Lv);
}
}
//退出
xls.Quit();
}
运行结果如下图所示:
图21-3 读取到的数据
学习更多vb.net知识,请参看vb.net 教程 目录
学习更多C#知识,请参看C#教程 目录
相关文章:

21.2.1 基本操作
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 Excel的基本操作步骤: 1、打开Excel:定义了一个Application对象: Microsoft.Office.Interop.E…...

车载以太网__传输层
车载以太网中,传输层和实际用的互联网相差无几。本篇文章对传输层中的IP进行介绍 目录 什么是IP? IP和MAC的关系 IP地址分类 私有IP NAT DHCP 为什么要防火墙穿透? 广播 本地广播 直接广播 本地广播VS直接广播 组播 …...

简单本地部署deepseek(软件版)
Download Ollama on Windows 下载 下载安装 winr 输入 cmd 然后输入ollama -v,出现ollama版本,安装成功 deepseek-r1 选择1.5b 输入 cmd 下面代码 ollama run deepseek-r1:1.5b 删除deepseek的代码如下: ollama rm deepseek-r1:1.5b 使用…...

AI绘画:解锁商业设计新宇宙(6/10)
1.AI 绘画:商业领域的潜力新星 近年来,AI 绘画技术以惊人的速度发展,从最初简单的图像生成,逐渐演变为能够创造出高度逼真、富有创意的艺术作品。随着深度学习算法的不断优化,AI 绘画工具如 Midjourney、Stable Diffu…...

20250202在Ubuntu22.04下使用Guvcview录像的时候降噪
20250202在Ubuntu22.04下使用Guvcview录像的时候降噪 2025/2/2 21:25 声卡:笔记本电脑的摄像头自带的【USB接口的】麦克风。没有外接3.5mm接口的耳机。 缘起:在安装Ubuntu18.04/20.04系统的笔记本电脑中直接使用Guvcview录像的时候底噪很大! …...

cors跨域是如何做的?
CORS 跨域资源共享详解 什么是 CORS? CORS(Cross-Origin Resource Sharing)是一种机制,允许浏览器向不同源的服务器发出请求,从而实现跨域资源共享。默认情况下,浏览器出于安全考虑,禁止跨域请求。这意味着,当一个网页尝试从不同的域名、协议或端口加载资源时,浏览器…...

系统通解:超多视角理解
在科学研究和工程应用中,我们常常面临各种复杂系统,需要精确描述其行为和变化规律。从物理世界的运动现象,到化学反应的进程,再到材料在受力时的响应,这些系统的行为往往由一系列数学方程来刻画。通解,正是…...

最大矩阵的和
最大矩阵的和 真题目录: 点击去查看 E 卷 100分题型 题目描述 给定一个二维整数矩阵,要在这个矩阵中选出一个子矩阵,使得这个子矩阵内所有的数字和尽量大,我们把这个子矩阵称为和最大子矩阵,子矩阵的选取原则是原矩阵中一块相互…...

深度学习 | 表示学习 | 卷积神经网络 | Batch Normalization 在 CNN 中的示例 | 20
如是我闻: 让我们来用一个具体的例子说明 Batch Normalization 在 CNN 里的计算过程,特别是如何对每个通道(channel)进行归一化。 1. 假设我们有一个 CNN 层的输出 假设某个 CNN 层的输出是一个 4D 张量,形状为&#…...

最短木板长度
最短木板长度 真题目录: 点击去查看 E 卷 100分题型 题目描述 小明有 n 块木板,第 i ( 1 ≤ i ≤ n ) 块木板长度为 ai。 小明买了一块长度为 m 的木料,这块木料可以切割成任意块,拼接到已有的木板上,用来加长木板。 小明想让最…...

团体程序设计天梯赛-练习集——L1-034 点赞
前言 20分的题目题目不难,理解也不难,做起来有点问题 L1-034 点赞 微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本…...

利用腾讯云cloud studio云端免费部署deepseek-R1
1. cloud studio 1.1 cloud studio介绍 Cloud Studio(云端 IDE)是基于浏览器的集成式开发环境,为开发者提供了一个稳定的云端工作站。支持CPU与GPU的访问。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器即可使用。Clo…...

LabVIEW的智能电源远程监控系统开发
在工业自动化与测试领域,电源设备的精准控制与远程管理是保障系统稳定运行的核心需求。传统电源管理依赖本地手动操作,存在响应滞后、参数调节效率低、无法实时监控等问题。通过集成工业物联网(IIoT)技术,实现电源设备…...

Docker深度解析:安装各大环境
安装 Nginx 实现负载均衡: 挂载 nginx html 文件: 创建过载目录: mkdir -p /data/nginx/{conf,conf.d,html,logs} 注意:在挂载前需要对 conf/nginx.conf 文件进行编写 worker_processes 1;events {worker_connections 1024; …...

牛客 - 链表相加(二)
描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。 给定两个这种链表,请生成代表两个整数相加值的结果链表。 数据范围:0≤n,m≤1000000,链表任意值 0≤val≤9 要求:空间复杂度 O(n)&am…...

GPU 硬件原理架构(一)
这张费米管线架构图能看懂了,整个GPU的架构基本就熟了。市面上有很多GPU厂家,他们产品的架构各不相同,但是核心往往差不多,整明白一了个基本上就可以触类旁通了。下面这张图信息量很大,可以结合博客GPU 英伟达GPU架构回…...

C/C++编译器
C/C 代码是不可跨平台的,Windows 和 Unix-like 有着不同的 API,C/C 在不同平台有着不同编译器。 MSVC Windows 平台,MSVC 是 Visual Studio 中自带的 C/C 编译器。 GCC Unix-like 平台,GCC 原名 GNU C Compiler,后…...

Immutable设计 SimpleDateFormat DateTimeFormatter
专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解不可变设计模式,时间format有线程安全要求的注意使用DateTimeFormatter 目录 ImmutableSimpleDateFormat 非线程安全可以synchronized解决&a…...

最新EFK(Elasticsearch+FileBeat+Kibana)日志收集
文章目录 1.EFK介绍2.操作前提3.FileBeat8.15下载&安装4.编写FileBeat配置文件5.启动FileBeat6.模拟实时日志数据生成7.查看索引(数据流)是否创建成功8.创建数据视图:9.查看数据视图10.使用KQL对采集的日志内容进行过滤11.给日志数据配置保留天数(扩展知识) 1.E…...

Vue 3 30天精进之旅:Day 15 - 插件和指令
欢迎来到“Vue 3 30天精进之旅”的第15天!今天我们将深入探讨Vue 3中的插件和自定义指令。这两个主题能够帮助我们扩展Vue的功能,使我们的应用更加灵活和强大。 一、插件概述 1. 什么是插件? 在Vue中,插件是一种功能扩展机制。…...

【实战篇】Android安卓本地离线实现视频检测人脸
实战篇Android安卓本地离线实现视频检测人脸 引言项目概述核心代码类介绍人脸检测流程项目地址总结 引言 在当今数字化时代,人脸识别技术已经广泛应用于各个领域,如安防监控、门禁系统、移动支付等。本文将以第三视角详细讲解如何基于bifan-wei-Face/De…...

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter3-语言基础
三、语言基础 ECMAScript 的语法很大程度上借鉴了 C 语言和其他类 C 语言,如 Java 和 Perl。ECMAScript 中一切都区分大小写。无论是变量、函数名还是操作符,都区分大小写。 所谓标识符,就是变量、函数、属性或函数参数的名称。标识符可以由…...

(dpdk f-stack)-堆栈溢出-野指针-内存泄露(问题定位)
目的:解决堆栈溢出,野指针,内存泄露。 解决方法 [root@ test]# yum install libasan [root@ test]# cat test.c int main() { int array[10]; array[11] = 11; return 0; } [root@ test]# gcc -fsanitize=address -O1 -fno-omit-frame-pointer -g -O0 test.c -o test ./te…...

HTML5 教程之标签(3)
HTML5 <center> 标签 (已废弃) 定义和用法 <center> 标签对其包围的文本进行水平居中处理。HTML5不支持使用<center>标签,因此有关该标签的更多信息,请参考“HTML <center>标签”部分! 示例: <center>这个…...

【蓝桥】动态规划-简单-破损的楼梯
题目 解题思路 完整代码 #include <bits/stdc.h> using namespace std; const int N1e59; const long long p1e97; long long dp[N];//dp[i]表示走到第i级台阶的方案数 bool broken[N];//broken代表破损台阶的数组 int main() {int n,m;cin>>n>>m;for(int …...

如何自定义软件安装路径及Scoop包管理器使用全攻略
如何自定义软件安装路径及Scoop包管理器使用全攻略 一、为什么无法通过WingetUI自定义安装路径? 问题背景: WingetUI是Windows包管理器Winget的图形化工具,但无法直接修改软件的默认安装路径。原因如下: Winget设计限制…...

107,【7】buuctf web [CISCN2019 华北赛区 Day2 Web1]Hack World
这次先不进入靶场 看到红框里面的话就想先看看uuid是啥 定义与概念 UUID 是 Universally Unique Identifier 的缩写,即通用唯一识别码。它是一种由数字和字母组成的 128 位标识符,在理论上可以保证在全球范围内的唯一性。UUID 的设计目的是让分布式系…...

STM32 ADC单通道配置
硬件电路 接线图: ADC基本结构图 代码配置 根据基本结构框图 1.定义结构体变量 //定义结构体变量 GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量 ADC_InitTypeDef ADC_InitStructure; //定义ADC结构体变量 2.开启RCC时钟 ADC、GPIO的时钟&#x…...

【技海登峰】Kafka漫谈系列(二)Kafka高可用副本的数据同步与选主机制
【技海登峰】Kafka漫谈系列(二)Kafka高可用副本的数据同步与选主机制 一. 数据同步 在之前的学习中有了副本Replica的概念,解决了数据备份的问题。我们还需要面临一个设计难题即:如何处理分区中Leader与Follwer节点数据同步不匹配问题所带来的风险,这也是保证数据高可用的…...

Spring的三级缓存如何解决循环依赖问题
循环依赖问题是在对象之间存在相互依赖关系,形成一个闭环,导致无法准确的完成对象的创建和初始化,当两个或多个对象彼此之间相互引用,这种相互引用形成一个循环时,就可能出现循环依赖问题。 在 Spring 框架中…...