读取文件将 Excel 文件 转换成 CSV 文件 解决方案

摘要:
每天的真相是,美是平凡的,平凡到你无法感受到她的存在;美是平淡的,平淡到只剩下温暖的记忆;美丽也是平静的,如此平静,只有你才能用巨大的努力激起她的涟漪。这就像比较吃西瓜的人和吃瓜子的人的数量。单位不同。

本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~

    考参:

    http://www.codeproject.com/Articles/246772/Convert-xlsx-xls-to-csv

    http://exceldatareader.codeplex.com/

    

    做法:从excel中把数据读取出来,然后每一个单元格的值用逗号开隔,再拼起来,保存到一个.csv文件中。

    

    using System.IO;
using Excel;
using System.Data;

    

    须要引用 ExcelDataReader 开源项目 中的2个DLL: Excel.dll  和 ICSharpCode.SharpZipLib.dll

    以下是只读取第一个 sheet 内容的例样。

    每日一道理
美丽是平凡的,平凡得让你感觉不到她的存在;美丽是平淡的,平淡得只剩下温馨的回忆;美丽又是平静的,平静得只有你费尽心思才能激起她的涟漪。
public static bool ReadSheet1(string sXlsxFile,out string sError)
        {
            sError = "";

            try
            {
                string filePath = sXlsxFile;
                FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);

                //// Reading from a binary Excel file ('97-2003 format; *.xls)
                //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);

                // Reading from a OpenXml Excel file (2007 format; *.xlsx)
                IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

                // DataSet - The result of each spreadsheet will be created in the result.Tables
                DataSet result = excelReader.AsDataSet();

                string sSheet1 = result.Tables[0].TableName.ToString(); // to get first sheet name (table name)

                StringBuilder csvData = new StringBuilder();
                int row_no = 0;
                int ind = 0;

                while (row_no < result.Tables[ind].Rows.Count) // ind is the index of table
                // (sheet name) which you want to convert to csv
                {
                    for (int i = 0; i < result.Tables[ind].Columns.Count; i++)
                    {
                        csvData.Append(result.Tables[ind].Rows[row_no][i].ToString() + ",");
                    }
                    row_no++;
                    csvData.Append("\n");
                }

                string output = filePath.Replace(".xlsx", ".csv"); // define your own filepath & filename
                StreamWriter csv = new StreamWriter(@output, false);
                csv.Write(csvData);
                csv.Close();

                // Free resources (IExcelDataReader is IDisposable)
                excelReader.Close();
            }
            catch (Exception ex)
            {
                sError = ex.Message;
            }

            return sError.Trim() == "";
        }

    

文章结束给大家分享下程序员的一些笑话语录: PC软件体积大,是因为一个PC软件功能往往较多,能够满足你一个方面的需求,而一个iphone软件往往没几行代码,干一件很小的事情,自然需要的软件就多。就像吃西瓜和吃瓜子的来比数目,单位不同啊。

免责声明:文章转载自《读取文件将 Excel 文件 转换成 CSV 文件 解决方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在Dialog中添加工具条pspice仿真老不收敛怎么办?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

itextPDF使用笔记

最近在做报表打印,使用的是itextPDF,第一次用到它,简单做个笔记。主要涉及到字体设置,文字处理操作,表格及单元格设置,绘制一些图形 IText中有三个处理text的类com.lowagie.text.Chunk,com.lowagie.text.Phrase,com.lowagie.text.Paragraph。 官网的API:https://api...

JSON反序列化接口的问题

今天在使用JSON序列化类时出现问题,原来类中有一个接口,在反序列化时不知道接口的实体是什么 public class Device : IComparer { private string _deviceid; private string _devicename; private string _deviceaddr = "01"; private s...

图解固件、驱动、软件的区别

大家好,我是良许。 不管我们使用什么操作系统,无论是 Windows、macOS 还是 Linux ,里面都安装了许多软件、驱动程序和固件。但是,这三者概念有区别呢? 我在朋友圈做了个小调查,发现居然很多人不清楚他们的关系,因此写下此文来给大家做个简单的科普。 文字描述太抽象了,我们直接来看漫画吧。 好了,看完漫画,我们再来看正规的解释是怎样的...

C#对config配置文件的管理

应用程序配置文件,对于asp.net是web.config,对于WINFORM程序是App.Config(ExeName.exe.config)。 配置文件,对于程序本身来说,就是基础和依据,其本质是一个xml文件,对于配置文件的操作,从.NET2.0开始,就非常方便了,提供了System[.Web].Configuration这个管理功能的NameSpa...

如何测试APP是否兼容IPv6

从2016年6月苹果公司要求APP兼容IPv6,很多APP在审核的时候因为这个原因被拒,这里介绍了一种利用两个iPhone手机和一台 OS X10.11以上的mac( IPv6 DNS64/NAT64 网络,这项功能是 OS X 10.11 新加的功能) 第一步:通过数据线连接iphone和mac 第二步:打开iphone的个人热点并选择仅蓝牙和USB...

[软件过程/软件生命周期模型]软件过程的工具链【待续】

0 宣言:DevOps & RUP统一过程建模 1 项目管理 (需求管理 / 缺陷管理 / ...) 禅道(前身:bugfree) [在线协作] JIRA(项目与事务跟踪工具) 与禅道类同,但又不同,有明显的Scrum敏捷风格 Microsoft Project [离线维护] 在线文档 or Excel 2 系统建模 2....