c#里excel转换成csv的万能方法

摘要:
最近经过长时间的工作,我无法解决Excel转换的问题。最后,我找到了一个ExcelWrapper.dll,直接在机器中打开Excel,然后读取单元格。阅读后,我整理了单元格内容并将其转换为csv格式。string.IsNullOrEmpty)30{31count++;32}33}34 catch35{36row_count=count-1;37}38 row_count=count-1;3940StreamWriterfileWriter=newStreamWriter;41//如果没有行,跳出42if43{}44else45{4647//有多少列A、B、C、D、E……48try49{50stringtmp=?String.IsNullOrEmpty)52{53col++;54}55}56 catch57{58col_count=col-1;59}60col_count=col-1;61626364用于//第65行{66stringline=“”;67stringpos;68用于//第69列{70try71{72pos=a+i.ToString();73line+=wapper.GetCellValue.Trim();74line+=“,”;7576}77catch78{79line+=”,“;80Console.WriteLine;81}82}83fileWriter。WriteLine;84//Console.WriteLine;85}8687}88fileWriter.Flush();89fileWriter.Close();90wapper.Close();9192//Console.ReadLine();关于ExcelWrapper.dll,发布似乎并不容易。这是因为兼容性很好。虽然执行效率不高,但计算机速度也很快。

最近搞了半天,都搞不定excel转换问题,总算找到一个ExcelWrapper.dll,直接在机子里面打开excel,然后读取cell,读好后把cell内容整理好,转换成csv格式。好了废话少说,下面的是我写的转换类

c#里excel转换成csv的万能方法第1张c#里excel转换成csv的万能方法第2张xls2csv
 1 public class xls2csv
2 {
3 //时间:2012年3月31日14:33:20
4
5
6 public xls2csv()
7 {
8
9 }
10
11 /// <summary>This method convery excel sheet to
12 /// csvfiles.</summary>
13 /// <param name="start">摘取下来的表格前面若有几行需要跳过的,则填写,默认写0</param>
14 /// <param name="toend">同上,后面有几行不要就填几,默认写0</param>
15 public static void convert(string xlsPath, string csvPath,int start,int toend)
16 {
17 ExcelWrapper.Wrapper wapper = new ExcelWrapper.Wrapper();
18 wapper.Open(xlsPath, true);
19 char col = 'A';
20 int row = wapper.WorksheetCount;
21 string name = wapper.WorksheetNames[0];
22 int row_count=0;
23 int col_count;
24 int count = 1;
25
26 //有多少行 1,2,3,4,5,6.。。。
27 try
28 {
29 while (!string.IsNullOrEmpty(wapper.GetCellValue(col + count.ToString())))
30 {
31 count++;
32 }
33 }
34 catch (NullReferenceException e)
35 {
36 row_count = count-1;
37 }
38 row_count = count-1;
39
40 StreamWriter fileWriter = new StreamWriter(csvPath, false, Encoding.Default);
41 //如果没有行 则跳出
42 if (row_count < 1)
43 { }
44 else
45 {
46
47 //有多少列 A,B,C,D,E,.....
48 try
49 {
50 string tmp = (row_count > 1) ? ((row_count / 2 + 1).ToString()) : ("1");
51 while (!string.IsNullOrEmpty(wapper.GetCellValue(col + tmp)))
52 {
53 col++;
54 }
55 }
56 catch (NullReferenceException e)
57 {
58 col_count = col - 1;
59 }
60 col_count = col - 1;
61
62
63
64 for (int i = 1 + start; i <= row_count - toend; i++)//
65 {
66 string line = "";
67 string pos;
68 for (char a = 'A'; a <= col_count; a++)//
69 {
70 try
71 {
72 pos = a + i.ToString();
73 line += wapper.GetCellValue(pos).Trim();
74 line += ",";
75
76 }
77 catch (NullReferenceException e)
78 {
79 line += ",";
80 Console.WriteLine("position:{1}{0} is empty", i, a);
81 }
82 }
83 fileWriter.WriteLine(line);
84 // Console.WriteLine(line);
85 }
86
87 }
88 fileWriter.Flush();
89 fileWriter.Close();
90 wapper.Close();
91
92 // Console.ReadLine();
93 }
94 }


关于ExcelWrapper.dll,好像不好发。这个有点就是兼容性好,虽然执行效率不高,但现在计算机速度也很快。

上次用的代码

c#里excel转换成csv的万能方法第3张c#里excel转换成csv的万能方法第4张OleDb连接方法
 1 static void convertExcelToCSV(string sourceFile, string worksheetName, string targetFile)
2 {
3 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sourceFile +
4 ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
5
6 OleDbConnection conn = null;
7 StreamWriter wrtr = null;
8 OleDbCommand cmd = null;
9 OleDbDataAdapter da = null;
10
11 try
12 {
13 conn = new OleDbConnection(strConn);
14 conn.Open();
15
16 //cmd = new OleDbCommand("SELECT * FROM " + worksheetName, conn);
17 cmd = new OleDbCommand("SELECT * FROM [" + worksheetName + "$]", conn);
18 cmd.CommandType = CommandType.Text;
19 wrtr = new StreamWriter(targetFile);
20
21 da = new OleDbDataAdapter(cmd);
22 DataTable dt = new DataTable();
23 da.Fill(dt);
24
25 for (int x = 0; x < dt.Rows.Count; x++)
26 {
27 string rowString = "";
28 for (int y = 0; y < dt.Columns.Count; y++)
29 {
30 rowString += "\"" + dt.Rows[x][y].ToString() + "\",";
31 }
32 wrtr.WriteLine(rowString);
33 }
34 Console.WriteLine();
35 Console.WriteLine("Done! Your " + sourceFile + " has been converted into " + targetFile+".");
36 Console.WriteLine();
37 }
38 catch (Exception exc)
39 {
40 Console.WriteLine(exc.ToString());
41 Console.ReadLine();
42 }
43 finally
44 {
45 if (conn.State == ConnectionState.Open)
46 conn.Close();
47 conn.Dispose();
48 cmd.Dispose();
49 da.Dispose();
50 wrtr.Close();
51 wrtr.Dispose();
52 }
53 }

主要不兼容64位模式,折腾了好久,这次总算解决了!

文件这样上传,不知道对不对

https://files.cnblogs.com/grey/ExcelWrapper.zip

免责声明:文章转载自《c#里excel转换成csv的万能方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python入门教程(2)【转载】Android卡顿检测方案下篇

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

相关文章

MongoDB中导出数据为csv文件

1. 打开命令行; 2. 输入如下指令(确保数据库是开着的,下面的数据库名称和集合名称以及域的名称可以根据需求修改) mongoexport -d myDB -c user -f _id,name,password,adress --csv -o ./user.csv 3. 说明: mongoexport -d myDB(myDB修改成...

excel表 更改后缀名 xlsx转成csv csv转换xlsx

excel 转成CSV 步骤: 1、打开你需要转换的Excel表格。这里特别介绍一下多个数字的现象,我们知道,像身份证这些多位数字,在正常表格里都是会加上一个‘来使其显示的,或者换成“文本”模式的单元格形式:这里分别以文本形式以及加‘的数字形式,为大家讲解转换成CSV格式后的效果差别。 2、先看以文本形式保存的表格转换: 2.1然后,就可以点击左上角的o...

将SqlServer的数据导出到Excel/csv中的各种方法 .

以下都只是介绍操作的原理,具体要求要在应用中具体分析改变。 如果大家有其他好的方法,请相互告知,共同学习。 1.       此方法常用在form或者Console Application中,使用时须用要添加Reference,具体做法:           右键点击项目添加“Add Reference”,在com组件下,选择“Microsoft Exc...

jmeter源码导入eclipse二次开发csv data set config实现从指定行开始读取)

一、Ant安装   1.官网去下载ant工具,下载地址:http://ant.apache.org/bindownload.cgi   2.下载后将ant进行解压,配置ant的环境变量,需要设置三个地方ant_home=d:/apache-ant-1.9.7path=%ANT_HOME%in;   classpath=%ANT_HOME%lib;   3....

MySQL导入utf8编码的CSV文件

首先,作为测试,我们在这里创建一个名为testdb的数据库,和一个名为test_table的表: create database if not exists testdb default charset utf8 collate utf8_general_ci; use testdb; drop table if exists test_table; cr...

反射+javacsv+scv文件构建资源获取

1.反射之前已经写过,大家可以在http://www.cnblogs.com/myadmin/p/5282628.html中大概了解下。同时请大家指正。 javacsv.jar:java中用来处理csv文件的jar包 csv文件:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯...