指定路径批量将xls转换成csv
PS : 用到spire库,.net控制台应用程序
其实本来没打算写这个工具的,只是最近需要用到,手头上正好没有这样的工具,那么怎么办,写呗!
其实说白了就是省事,策划想怎么玩,把表把工具丢给他,省得策划两分钟来拍一次你的后背,哈哈哈!
下面附上代码,注释得很清楚,我挑需要注意的说一下就好...
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 using System.IO;
7 using Spire.Xls;
8 using Spire.Xls.Collections;
9
10 namespace ExcelTools
11 {
12 class Program
13 {
14 /// <summary>
15 /// 程序入口
16 /// </summary>
17 /// <param name="args"></param>
18 static void Main(string[] args)
19 {
20 try
21 {
22 //exe同级目录下的pathconfig配置文件
23 string dataPath = Directory.GetCurrentDirectory() + @"\PathConfig.txt";
24 //用流方式读取配置文件
25 StreamReader streamReader = new StreamReader(dataPath);
26 //因为只设置了一行,用逗号隔开,所以只读一行
27 string msg = streamReader.ReadLine();
28 //将两个路径分开
29 string[] getPath = msg.Split(',');
30 //第一个是输入路径
31 string inPath = getPath[0];
32 //第二是输出路径
33 string outPath = getPath[1];
34 //读完后关闭加载器
35 streamReader.Close();
36 Console.WriteLine("文件路径:" + inPath);
37 Console.WriteLine("转换存放路径:" + outPath);
38 List<string> xlsPathList = new List<string>();//用来接指定文件路径
39 List<string> tmpList = new List<string>();//递归过渡缓存
40 //拿到指定xls路径列表
41 xlsPathList = GetAllXls(inPath, tmpList);
42 //遍历转换
43 for (int i = 0; i < xlsPathList.Count; i++)
44 {
45 Console.WriteLine(string.Format("开始转换{0}...", xlsPathList[i]));
46 StartConver(xlsPathList[i], outPath);
47 }
48 Console.WriteLine("全部转换已经完成!");
49 Console.ReadLine();
50 Console.Clear();
51 }
52 catch (Exception e)
53 {
54 Console.WriteLine(e.Message);
55 Console.ReadLine();
56 return;
57 }
58 }
59 /// <summary>
60 /// 开始转换
61 /// </summary>
62 /// <param name="inPath">指定文件路径</param>
63 /// <param name="outPath">转换完成输出路径</param>
64 static void StartConver(string inPath, string outPath)
65 {
66 try
67 {
68 Workbook work = new Workbook();//实例化一个对象
69 work.LoadFromFile(inPath);//调用对象方法,加载指定文件
70 WorksheetsCollection sheetArr = work.Worksheets;//拿到这个xls所有的sheet
71 //遍历所有的sheet
72 for (int i = 0; i < sheetArr.Count; i++)
73 {
74 string printPath = outPath + sheetArr[i].Name + ".csv";//输出路径指定命名
75 sheetArr[i].SaveToFile(printPath, ",", Encoding.UTF8);//保存转换完成的文件到路径下,设置编码格式
76 Console.WriteLine(string.Format("转换完成{0}", sheetArr[i].Name));
77 }
78 }
79 catch (Exception e)
80 {
81 Console.WriteLine(e.Message);
82 Console.ReadLine();
83 }
84 }
85 /// <summary>
86 /// 获取指定路径下所有指定类型的文件路径
87 /// </summary>
88 /// <param name="inPath">指定文件夹路径</param>
89 /// <param name="fileList">路径列表</param>
90 /// <returns></returns>
91 static List<string> GetAllXls(string inPath, List<string> fileList)
92 {
93 string fileName;
94 DirectoryInfo dir = new DirectoryInfo(inPath);//实例化路径对象
95 FileInfo[] fil = dir.GetFiles();//从对象上拿到所有的文件列表
96 DirectoryInfo[] dii = dir.GetDirectories();//得到当前路径的所有子目录
97 //遍历文件列表,拿到指定类型文件
98 foreach (FileInfo f in fil)
99 {
100 fileName = f.FullName;
101 if (fileName.EndsWith("xls"))
102 {
103 fileList.Add(fileName);
104 }
105 }
106 //这里是递归,用来拿到子目录里面还有文件里面的指定文件
107 foreach (DirectoryInfo d in dii)
108 {
109 GetAllXls(d.FullName, fileList);
110 }
111 return fileList;
112 }
113 }
114 }
(1)路劲问题
你要转文件,肯定得有一个起点一个终点,不推荐在代码里面写死路径,这样可以保证通用性,我写得比较懒,直接把两个路径写成配置文件,间接明了
这里需要注意的是,stream这些文件流在使用完成后必须关闭;Directory.GetCurrentDirectory() 这个就是你的exe所在文件夹路径

(2)用递归去获取xls文件是为了防止有些表分类很细很细,这里也是写死了是xls

(3)到这里转换就需要用到spire库,主要的转换功能就在它,就在它,就在它!重要的事情说三遍


(3)最后就可以运行了,我是直接转到unity里读取,当然你也可以再继续转成json文件放到unity里,其实都是一样的
指定路径批量将xls转换成csv的更多相关文章
- 用 unoconv 将 xls 转换成 csv
在 Linux 下,用 unoconv 将 xls 转换成 csv. unoconv -f csv -v input.xlsx
- 【游戏开发】Excel表格批量转换成CSV的小工具
一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...
- 将DataTable转换成CSV文件
DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表.CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记 ...
- 转换成CSV文件、Word、Excel、PDF等的方法--读取CSV文件的方法
1. 转换成CSV文件: http://www.dotnetgallery.com/lab/resource93-Export-to-CSV-file-from-Data-Table-in-Aspne ...
- 批量将网页转换成图片或PDF文档技巧分享
工作中我们有时要将一些批量的网页转换成图片或者PDF文档格式,尽管多数浏览器具有滚动截屏或者打印输出PDF文档功能.可是假设有几十上百张网页须要处理,那也是要人命的.所以我一直想找一款可以批量处理该工 ...
- 使用VBA批量转换Excel格式,由.xls转换成.xlsx
问题分析: Excel2007以前的格式是.xls,之后的格式是.xlsx.打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式.但是面对几百个Excel表这样就太累了,搜索很久,也 ...
- Python: 把txt文件转换成csv
最近在项目上需要批量把txt文件转成成csv文件格式,以前是手动打开excel文件,然后导入txt来生产csv文件,由于这已经变成每周需要做的事情,决定用python自动化脚本来实现,思路: 读取文件 ...
- 将日期转换为指定的格式:比如转换成 年月日时分秒 这种格式:yyyy-MM-dd hh:mm:ss 或者 yyyy-MM-dd。总结下。
可以为Date原型添加如下的方法: Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth() ...
- 怎样把txt文档转换成csv文件?
其实csv就是逗号隔开的一行一行的数据, 如果每行数据中都是用逗号分隔的,直接把文件后缀txt改成csv就行了. 用python搞定: import numpy as np import pandas ...
随机推荐
- 2019年最新超级有趣好玩的html+css网页布局课程,前端入门基础,html5+css3零基础入门课程-黑马程序员pink老师精心录制
大家好,我是黑马程序员pink老师!! 本次视频是前端零基础入门的课程,pink老师采取有趣好玩讲法,带你快乐的学习枯燥的html+css知识,学完之后让你能快速布局pc端页面.代码也可以讲的好玩有趣 ...
- centos7 安装 docker
一.概念 1.Docker引擎 (docker engine) 也称docker daemon,也称为docker服务,只要启动服务,就可以通过docker client发送相关docker命名,与d ...
- js赋值,字典,数据类型和参数传递的简单熟悉
之所以这样分,原因是布尔类型和整数浮点数在内存里是直接赋值的,而数组实际上数组名指的是这个数组的地址 字符串同样是地址,字典也是. //熟悉赋值 var x=0; console.log(x); va ...
- spring源码分析系列4:ApplicationContext研究
ApplicationContext接口 首先看一下一个最基本的上下文应该是什么样子 ApplicationContext接口的注释里写的很清楚: 一个基本applicationContext应该提供 ...
- HashMap 取数算法
Map,百度翻译给我的解释是映射,在Java编程中,它是存储键值对(key-value)的一种容器,也是Java程序员常用的对象.这篇博客介绍下HashMap的实现:java是面向对象编程语言,jdk ...
- Git设置分支保护实现CodeReview卡点
# Git设置分支保护实现CodeReview卡点 > From:https://blog.csdn.net/crisschan/article/details/100922668 > G ...
- 为什么那么多自学JAVA的后来都放弃了?总结起来就这些原因
目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Java开发. 目前来讲市场上需要的Java人员非 ...
- python 中的一点新知识
逻辑行与物理行 所谓物理行(Physical Line)是你在编写程序时 你所看到 的内容.所谓逻辑行(Logical Line)是 Python 所看到 的单个语句.Python 会假定每一 物理行 ...
- 第3章(3) do{}while(0)语句
do {} while (0) 主要在宏定义后为语句中使用,比如: #define macrofun(a, b, c) \ do { \ if (a == 5) \ do_this(b, c); \ ...
- Web安全 --Wfuzz 使用大全
前言: 做web渗透大多数时候bp来fuzz 偶尔会有觉得要求达不到的时候 wfuzz就很有用了这时候 用了很久了这点来整理一次 wfuzz 是一款Python开发的Web安全模糊测试工具. 下 ...