在开发一个项目,使用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);
}

最新文章

  1. tomcat配置详解/优化方案
  2. Timer和TimerTask的用法
  3. 命令行 更新Android sdk
  4. 常见的几种 CSS 水平垂直居中解决办法
  5. [转帖]在RDLC中使用外部图片
  6. Python(2.7.6) 异常类的继承关系
  7. LA 4329 (树状数组) Ping pong
  8. objective-c常用数学方法
  9. 读《疯狂Ajax讲义》重点
  10. ClusterWare 服务介绍
  11. 真与假与c#,java中的不同之处
  12. Just Finish it up UVA - 11093
  13. Maven 介绍、安装使用
  14. Day12 CSS简单用法
  15. angular ViewChild ContentChild 系列的查询参数
  16. python源码编译
  17. Aizu2130-Billion Million Thousand-dp
  18. Django REST framework API开发
  19. oracle数据库名称已被一现有约束条件占用
  20. Ants on tree

热门文章

  1. 056 模块7-os库的基本使用
  2. java多线程之Executor框架
  3. Spring Boot2 系列教程(五)Spring Boot中的 yaml 配置
  4. group by语法
  5. java8新特性使用
  6. Hessian 接口使用示例总结(转载)
  7. valueForKey与valueForKeyPath 区别
  8. rocketmq学习(一) rocketmq介绍与安装
  9. charles 禁用Cookies /Block Cookies Settings
  10. 23 (OC)* 推送、APNS