C#/VB.NET Excel数据分列
C#/VB.NET Excel数据分列
有时候我们需要将保存在Excel单元格中的组合型数据拆分为多列(如将全名拆分为姓和名两列)以方便我们处理、记忆或保存。为了避免重复和大量的手动输入工作,Excel给我们提供了一个数据分列的功能。下面这幅图展示了如何在Excel中实现数据分列:

这篇文章将介绍如何使用C#和VB.NET编程的方式来实现Excel数据分列的功能。
步骤和代码:
第一步:创建一个新的Workbook类的对象,并加载Excel文档。
Workbook book = new Workbook();
book.LoadFromFile("测试.xlsx");
第二步:获取Excel文档中存放需要被拆分的数据的工作表,这里是第一个工作表。
Worksheet sheet = book.Worksheets[];
第三步:按分隔符号将数据拆分为多列。
初始化一个字符串数组和一个字符串,遍历工作表中的指定行,按分隔符号(·)将数据为全名的那一列拆分为姓和名两列并将结果保存到字符串数组中,然后将数组的内容赋值给工作表的另两列。
string[] splitText = null;
string text = null;
for (int i = ; i < sheet.LastRow; i++)
{
text = sheet.Range[i + , ].Text;
splitText = text.Split('·');
for (int j = ; j < splitText.Length; j++)
{
sheet.Range[i + , + j + ].Text = splitText[j];
}
}
第四步:保存文档。
book.SaveToFile("输出.xlsx", ExcelVersion.Version2010);
运行代码,得到如下结果:

全部代码:
C#:
using Spire.Xls; namespace Split_Column_Data_to_Several_Columns
{
class Program
{
static void Main(string[] args)
{
Workbook book = new Workbook();
book.LoadFromFile("测试.xlsx");
Worksheet sheet = book.Worksheets[]; string[] splitText = null;
string text = null;
for (int i = ; i < sheet.LastRow; i++)
{
text = sheet.Range[i + , ].Text;
splitText = text.Split('·');
for (int j = ; j < splitText.Length; j++)
{
sheet.Range[i + , + j + ].Text = splitText[j];
}
} book.SaveToFile("输出.xlsx", ExcelVersion.Version2010);
}
}
}
VB.NET:
Imports Spire.Xls Namespace Split_Column_Data_to_Several_Columns
Class Program
Private Shared Sub Main(args As String())
Dim book As New Workbook()
book.LoadFromFile("测试.xlsx")
Dim sheet As Worksheet = book.Worksheets()
Dim splitText As String() = Nothing
Dim text As String = Nothing
For i As Integer = To sheet.LastRow -
text = sheet.Range(i + , ).Text
splitText = text.Split("·"C)
For j As Integer = To splitText.Length -
sheet.Range(i + , + j + ).Text = splitText(j)
Next
Next book.SaveToFile("输出.xlsx", ExcelVersion.Version2010)
End Sub
End Class
End Namespace
(注意:这里我使用了一个免费的Excel组件)
C#/VB.NET Excel数据分列的更多相关文章
- VB操作EXCEL文件大全
Private Sub writeToExcel(strTmp1() As String, colTmp1 As Collection)'' Dim tmp1 Dim i1 As Integer, i ...
- EXCEL数据透视相关知识
要边看边总结要点:1.部门管理,标准化作业流程,控制生产经营过程,预知风险2.这一项内容,用一个工作薄三个SHEET表来完成.分类汇总表(可变,N个),源数据表(标准.规范.通用.简洁.正确),1.符 ...
- Oracle导入excel数据方法汇总[转]
摘要:在程序编制过程和数据汇总交换过程中,经常会碰到需要将其他人员在office办公环境下编制的文件数据内容导入oracle中的情况.目前程序开发者经常使用的方法有如下几种:1,使用oracle提供的 ...
- 在SQL中导入Excel数据时强制以文本类型导入
Excel不是关系型数据库,在导入到sql中时对于数值型,sql有时int型会处理成float,有时数字文本混排的列,sql会认为是数值型,导入的结果有的数据变成了null,但是用sql导出excel ...
- 向SQL2008R2导入Acess、excel数据
一:导入Access数据 1.在sql2008查询分析 器中输入如下查询语句能查出access中的数据 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLE ...
- java数据库导入excel数据
导入数据会将表格分为xls和xlsx两种格式,网上有很多案例 1.excel数据表中的数据不全,数据库中又是必填选项:---从sql语句入手:判断有无 来改变语句 //设置可有可无 字段 加一个必有字 ...
- 【转】 如何导入excel数据到数据库,并解决导入时间格式问题
在办公环境下,经常会用到处理excel数据,如果用写程序导入excel数据到数据库那就太麻烦了,涉及解析excel,还要各种格式问题,下面简单利用数据库本身支持的功能解决这类导入问题. 准备 创建表 ...
- Oracle导入excel数据快速方法
Oracle导入excel数据快速方法 使用PLSQL Developer工具,这个可是大名鼎鼎的Oracle DBA最常使用的工具. 在单个文件不大的情况下(少于100000行),并且目的 ...
- VB中Excel 2010的导入导出操作
VB中Excel 2010的导入导出操作 编写人:左丘文 2015-4-11 近来这已是第二篇在讨论VB的相关问题,今天在这里,我想与大家一起分享一下在VB中如何从Excel中导入数据和导出数据到Ex ...
随机推荐
- MVC Core 网站开发(Ninesky) 2、栏目
栏目是网站的常用功能,按照惯例栏目分常规栏目,单页栏目,链接栏目三种类型,这次主要做添加栏目控制器和栏目模型两个内容,控制器这里会用到特性路由,模型放入业务逻辑层中(网站计划分数据访问.业务逻辑和We ...
- Angular企业级开发(4)-ngResource和REST介绍
一.RESTful介绍 RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来 ...
- [C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密
string 与 String,大 S 与小 S 之间没有什么不可言说的秘密 目录 小写 string 与大写 String 声明与初始化 string string 的不可变性 正则 string ...
- [译] C# 5.0 中的 Async 和 Await (整理中...)
C# 5.0 中的 Async 和 Await [博主]反骨仔 [本文]http://www.cnblogs.com/liqingwen/p/6069062.html 伴随着 .NET 4.5 和 V ...
- 使用cmake自动构建工程
公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程:如果是安卓,自动构建出eclipse工程,如果是IO ...
- MySQL 系列(二) 你不知道的数据库操作
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...
- [原]一个针对LVS的压力测试报告
LVS 测试报告 测试计划 基本功能测试 流量压力测试 响应时间测试 配置正确性测试 灾难恢复测试 测试点 基本功能测试 客户端IP地址正确性 RealServer 访问Internet测试(包括Ip ...
- 什么是英特尔® Edison 模块?
英特尔® Edison 模块 是一种 SD 卡大小的微型计算芯片,专为构建物联网 (IoT) 和可穿戴计算产品而设计. Edison 模块内含一个高速的双核处理单元.集成 Wi-Fi*.蓝牙* 低能耗 ...
- BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 8748 Solved: 3835[Submi ...
- SQLSERVER中NULL位图的作用
SQLSERVER中NULL位图的作用 首先感谢宋沄剑提供的文章和sqlskill网站:www.sqlskills.com,看下面文章之前请先看一下下面两篇文章 SQL Server误区30日谈-Da ...