C# 动态(不定)类型和不定参数数量,使用param写入CSV文档的最简单方法,提供excel(或记事本)阅读支持格式
在开发一个项目,使用C#写入CSV文件时,虽并未遇到太多阻碍,但是很多小伙伴估计和我有过同样的想法。简单的写入CSV,固定参数数量就好了很简单写完。但是如果遇到你得到的数据参数数量和参数类型未知或者动态变化怎么办,似乎好像不能固定在某几个形参中。因为我总想着每次造轮子(或写脚本)都想要做成自己的dll封装起来,等到第二次用的时候就能直接使用,不用再造一次车轮。
减少重复工作是程序员提高效率的有效办法之一,而且终身受用,哪怕轮子不合适也是在源代码上增加接口或方法来拓展,哪天就成了“万用”轮子呢。
废话结束,直入主题。
1、形参使用了 params 搭配 object ,动态参数输入,也就是不知参数的数量和各个参数的类型,进行输入。第一次琢磨出的用法,并不知在意其中的“风险”。
2、string temp = head + i.ToString() + ",4" + tail; 这句是占用符和格式字符串的使用,其实就是熟悉的 Console.WriteLine(“工号{0}, 姓名{1}, 年龄{2}”, n1,n2,n3);其中引号部分的格式。
3、if(i == array.Length-1) 其实是为了增加分隔符[,],旨在为了在excel中能正常分隔显示,此处你不需要可忽略。
4、补充了需要文件操作的代码,可以参考一下。最喜欢简单实用的代码,比长篇大论是不是大家更有耐心看完。
5、WriteCSV_Array()的使用,我是写到了一个事件当中,实际测试我就放到按钮中,这两段代码已经实现了整个CSV文件的写入,当然是关闭代码,或程序终止(暂停)后仍有保存。效果就是写入CSV文件,事件每触发一次,就写一行。参数类型:整数、double、浮点、字符串都能正常写入,参数数量当然是任意的。
6、最后希望看到的朋友多多支持,评论一下,有不足的我加以修改,有用的是对我的勉励,谢谢大家!
public void WriteCSV_Array(params object[] array)
{
string writeString = "";
string head = "{";
string tail = "}";
for (int i = ; i < array.Count();i++)
{
string temp = head + i.ToString() + ",4" + tail;//效果:{0,4}
if(i == array.Length-)//如果是最后一个元素,不加分隔符[,]
{
writeString = writeString + temp;
}
else //不是最尾元素,则加分隔符[,],分隔符作用是在:用excel打开时,分隔单元显示
{
writeString = writeString + temp + ",";//效果:{0,4},{1,4},...
}
}
if (File.Exists(@"E:\Test1.csv"))
{
sw.WriteLine(writeString, array);// new Object[] {array});
sw.Flush();
}
else
{ //如果无该文件,重新初始化一次
InitCSVControl();
}
}
public void InitCSVControl(string filePath = @"E:\",string fileName = @"TestCSVdll.csv",
FileMode mode = FileMode.Create,
FileAccess access = FileAccess.Write)
{
string pathName = filePath + fileName;
fs = new FileStream(pathName, FileMode.Create, FileAccess.Write);
sw = new StreamWriter(fs);
}
private void button1_Click(object sender, EventArgs e)
{
object[] array;
array = new object[] { 0.0011, 0.0022, 0.0033, 0.0044, 0.0055 };
csv_controller.WriteCSV_Array(array);
}
C# 动态(不定)类型和不定参数数量,使用param写入CSV文档的最简单方法,提供excel(或记事本)阅读支持格式的更多相关文章
- Elasticsearch 关键字:索引,类型,字段,索引状态,mapping,文档
1. 索引(_index)索引:说的就是数据库的名字.我这个说法是对应到咱经常使用的数据库. 结合es的插件 head 来看. 可以看到,我这个地方,就有这么几个索引,索引就是数据库,后面是这个数据库 ...
- 自动把动态的jsp页面(或静态html)生成PDF文档,并且上传至服务器
置顶2017年11月06日 14:41:04 阅读数:2311 这几天,任务中有一个难点是把一个打印页面自动给生成PDF文档,并且上传至服务器,然而公司框架只有手动上传文档,打印时可以保存为PDF在本 ...
- silverlight 生产图表(动态图表类型,Y轴数量) .xaml.cs文件
silverlight 页面后台方法 .xaml.cs文件 public void CreateChart(Grid oGrid, ObservableCollection<ListItem&g ...
- Apache DolphinScheduler 使用文档(6/8):任务节点类型与任务参数设置
本文章经授权转载,原文链接: https://blog.csdn.net/MiaoSO/article/details/104770720 目录 6. 任务节点类型和参数设置 6.1 Shell节点 ...
- 第10章 文档对象模型DOM 10.2 Document类型
Document 类型 JavaScript 通过 Document 类型表示文档.在浏览器中, document 对象是 HTMLDocument (继承自 Document 类型)的一个实例,表示 ...
- 深入理解DOM节点类型第七篇——文档节点DOCUMENT
× 目录 [1]特征 [2]快捷访问 [3]文档写入 前面的话 文档节点document,隶属于表示浏览器的window对象,它表示网页页面,又被称为根节点.本文将详细介绍文档节点document的内 ...
- ElasticSearch 5学习(8)——分布式文档存储(wait_for_active_shards新参数分析)
学完ES分布式集群的工作原理以及一些基本的将数据放入索引然后检索它们的所有方法,我们可以继续学习在分布式系统中,每个分片的文档是被如何索引和查询的. 路由 首先,我们需要明白,文档和分片之间是如何匹配 ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- Indri中的动态文档索引技术
Indri中的动态文档索引技术 戴维 译 摘要: Indri 动态文档索引的实现技术,支持在更新索引的同时处理用户在线查询请求. 文本搜索引擎曾被设计为针对固定的文档集合进行查询,对不少应用来说,这种 ...
随机推荐
- (转载)非常完善的Log4net配置详细说明
一.前言 在项目中,对项目的日志收集是非常重要的,这里我就说说代码的异常日志收集.收集异常日志,有很多第三方成熟的框架,我这里就介绍一下我常用的Log4net. Log4Net介绍 Log4net 是 ...
- .Net基础篇_学习笔记_第六天_For循环语法
For循环:专门处理已知循环次数的循环. 小技巧:连续敲击两下TAB键循环体自动搭建完成. For循环语法: for(表达式1;表达式2;表达式3){ 循环体;}表达式1一般为声明循环变量,记录循环 ...
- 遇到XML-GB2312网页编码的处理方法
报的错误:encoding error : input conversion failed due to input error, bytes I/O error : encoder error 1 ...
- 即时聊天APP(一)
最新写了一个即时聊天的安卓Demo,是基于Bmob后端开发的app,由于Bmob有较大局限性,因此,我并没有按照开发文档来进行开发,只是简单写了一个基本的文字聊天,以后有时间我会自己写一个带服务端的即 ...
- django 中namespace的问题
在早期的django版本中 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^polls/', include('polls.urls' ...
- NodeManager概述(基本职能和内部架构)
概述 NodeManager是运行在单个节点上的代理,它需要与应用程序的的ApplicationMaster和集群管理者ResourceManager交互: 从ApplicationMaster上接收 ...
- JavaScript之数学对象Math
Javascript 中Math和其他对象不同,它具有数学常数和函数的属性和方法.因为它的属性是数学常数,所以不能被改变(可以进行赋值操作,但最后值不变). Math的方法就是普通函数,调用他们直接用 ...
- Unity3D-游戏场景优化之遮挡剔除(Occlusion Culling)的使用
在大型3D游戏场景中,如何优化游戏性能是非常重要的一步.一般遮挡剔除是非常常用的.接下来我们看看如何使用遮挡剔除. 假设这是一个游戏场景. 下面这是相机的视口,相机的视觉是看不到很大立方体后面的那些小 ...
- CentOS7下LVM的基本操作
CentOS7下LVM的基本操作-创建LVM 环境 物理主机:windows10 虚拟软件:VMWare14 虚拟机:CentOS Linux release 7.6.1810 (Core) 软件环境 ...
- Mybatis源码解析,一步一步从浅入深(七):执行查询
一,前言 我们在文章:Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码的最后一步说到执行查询的关键代码: result = sqlSession.selectOne(command.ge ...