教你C#将CSV转为Excel的实现方法
作者:E-iceblue 发布时间:2021-09-18 00:42:03
标签:C#,CSV,Excel
CSV(Comma Separated Values)文件是一种纯文本文件,包含用逗号分隔的数据,常用于将数据从一个应用程序导入或导出到另一个应用程序。通过将CSV文件转为EXCEL,可执行更多关于数据编辑、格式设置等操作。下面,将通过C#及VB.NET代码展示如何来实现转换。
一、程序环境
可通过以下途径来安装Excel库:
1. 通过NuGet安装Spire.XLS;
2. 官方下载包,解压安装到本地指定路径。在Visual Studio中打开“解决方案资源管理器”,将本地安装路径下Bin文件夹下的dll添加引用至程序。
二、将CSV转为Excel
C#
using Spire.Xls;
namespace CSVtoExcel_XLS
{
class Program
{
static void Main(string[] args)
{
//加载CSV文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("test.csv", ",", 1, 1);
//获取第一个工作表
Worksheet sheet = workbook.Worksheets[0];
//访问工作表中使用的范围
CellRange usedRange = sheet.AllocatedRange;
//当将范围内的数字保存为文本时,忽略错误
usedRange.IgnoreErrorOptions = IgnoreErrorType.NumberAsText;
//自适应行高、列宽
usedRange.AutoFitColumns();
usedRange.AutoFitRows();
//保存文档
workbook.SaveToFile("result.xlsx", ExcelVersion.Version2013);
System.Diagnostics.Process.Start("result.xlsx");
}
}
}
VB.NET
Imports Spire.Xls
Namespace CSVtoExcel_XLS
Class Program
Private Shared Sub Main(args As String())
'加载CSV文件
Dim workbook As New Workbook()
workbook.LoadFromFile("test.csv", ",", 1, 1)
'获取第一个工作表
Dim sheet As Worksheet = workbook.Worksheets(0)
'访问工作表中使用的范围
Dim usedRange As CellRange = sheet.AllocatedRange
'当将范围内的数字保存为文本时,忽略错误
usedRange.IgnoreErrorOptions = IgnoreErrorType.NumberAsText
'自适应行高、列宽
usedRange.AutoFitColumns()
usedRange.AutoFitRows()
'保存文档
workbook.SaveToFile("result.xlsx", ExcelVersion.Version2013)
System.Diagnostics.Process.Start("result.xlsx")
End Sub
End Class
End Namespace
补充知识:C# .csv文件转为Excel格式;Excel格式转换为.csv,代码如下所示:
using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
using Excel=Microsoft.Office.Interop.Excel;
namespace WinFromAPP
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 将Csv文件转换为XLS文件
/// </summary>
/// <param name="FilePath">文件全路路径</param>
/// <returns>返回转换后的Xls文件名</returns>
public static string CSVSaveasXLS(string FilePath)
QuertExcel();
string _NewFilePath = "";
Excel.Application excelApplication;
Excel.Workbooks excelWorkBooks = null;
Excel.Workbook excelWorkBook = null;
Excel.Worksheet excelWorkSheet = null;
try
{
excelApplication = new Excel.ApplicationClass();
excelWorkBooks = excelApplication.Workbooks;
excelWorkBook = ((Excel.Workbook)excelWorkBooks.Open(FilePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value));
excelWorkSheet = (Excel.Worksheet)excelWorkBook.Worksheets[1];
excelApplication.Visible = false;
excelApplication.DisplayAlerts = false;
_NewFilePath = FilePath.Replace(".csv", ".xls");
excelWorkBook.SaveAs(_NewFilePath, Excel.XlFileFormat.xlAddIn, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
excelWorkBook.Close();
QuertExcel();
// ExcelFormatHelper.DeleteFile(FilePath);
//可以不用杀掉进程QuertExcel();
GC.Collect(System.GC.GetGeneration(excelWorkSheet));
GC.Collect(System.GC.GetGeneration(excelWorkBook));
GC.Collect(System.GC.GetGeneration(excelApplication));
}
catch (Exception exc)
throw new Exception(exc.Message);
finally
GC.Collect();
return _NewFilePath;
/// 将xls文件转换为csv文件
/// <returns>返回转换后的csv文件名</returns>
public static string XLSSavesaCSV(string FilePath)
_NewFilePath = FilePath.Replace(".xls", ".csv");
// excelWorkSheet._SaveAs(FilePath, Excel.XlFileFormat.xlCSVWindows, Missing.Value, Missing.Value, Missing.Value,Missing.Value,Missing.Value, Missing.Value, Missing.Value);
excelWorkBook.SaveAs(_NewFilePath, Excel.XlFileFormat.xlCSV, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//ExcelFormatHelper.DeleteFile(FilePath);
/// 删除一个指定的文件
/// <param name="FilePath">文件路径</param>
/// <returns></returns>
public static bool DeleteFile(string FilePath)
bool IsFind = File.Exists(FilePath);
if (IsFind)
{
File.Delete(FilePath);
}
else
throw new IOException("指定的文件不存在");
return true;
/// 执行过程中可能会打开多个EXCEL文件 所以杀掉
private static void QuertExcel()
Process[] excels = Process.GetProcessesByName("EXCEL");
foreach (var item in excels)
item.Kill();
private void btnConvert_Click(object sender, EventArgs e)
//CSVSaveasXLS(textBox1.Text);
XLSSavesaCSV(textBox1.Text);
}
}
来源:https://www.cnblogs.com/Yesi/p/16054552.html


猜你喜欢
- 一、JPA介绍JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系
- ArratList 类:存放同一数据类型容器(只能为引用数据类型,因实际其内部存放的是地址)1.导入其所在包import java.util
- 好几年没写博客了,很多知识不记是真的会忘记,以后还是保持写博客的习惯吧。坚持不一定成功,但放弃一定很舒服!(开玩笑(#^.^#))回归正题,
- 我们经常用简单数据类型,比如int作为泛型Dictionary<TKey,TValue>的key,但有时候我们希望自定义数据类型
- 本文实例为大家分享了opencv实现轮廓高斯滤波平滑的具体代码,供大家参考,具体内容如下一个小测试的题目:在图像上点选,找到与点选处相邻的颜
- Java String类的concat方法在了解concat()之前,首先需要明确的是String的两点特殊性长度不可变值不可变这两点从源码
- 一、下载安装包 1. JDK1.8百度云下载路径:百度网盘下载链接: https://pan.baidu
- Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,注意是默认情况下,一个
- 本文实例讲述了Android编程四大组件之BroadcastReceiver(广播接收者)用法。分享给大家供大家参考,具体如下:这里介绍如何
- 前言哈喽,我是小黑, 最近学了java的输入输出流后一直心痒痒,总想找一点事情来做,所以用java代码来实现了一下统计代码的所有行数,看一下
- 一、JTA组件简介什么是JTAJTA,全称:Java Transaction API。JTA事务比JDBC事务更强大。一个JTA事务可以有多
- for循环和foreach循环的区别首先在这里声明一点,C#和Java这两种语言很相似,尤其是初学的数据类型那一部分,所以这里写的for和f
- 本文实例为大家分享了Unity实现俄罗斯方块游戏的具体代码,供大家参考,具体内容如下一、演示二、实现思路创建每一个方块可移动到的位置点,可以
- 本文实例为大家分享了java实现二叉树遍历的具体代码,供大家参考,具体内容如下二叉树如下:遍历结果如下:以下是实现代码:package bi
- C#中的泛型和反射经常是一起工作的,因此这里就一次性的加以介绍了。由于c#是强类型语言,一般来说函数的返回类型和参数的类型都是一早写好的,这
- 本文实例为大家分享了Java实现置换密码加密解密,供大家参考,具体内容如下思路置换密码只不过是简单的换位而已,这里写的是一个分组长度为7的置
- 要将一个对象序列化,可是如果对象的属性为null的时候,我们想将属性为null的都去掉。在这里我使用Newtonsoft.Json.dll记
- 本文实例讲述了C#实现为类和函数代码自动添加版权注释信息的方法,分享给大家供大家参考之用。具体方法如下:以web项目为例:一:给类加注释1.
- 今天遇到一个特别的需求,需要从下面的字符串中转换成一个DateTime对象:[07-13 15:50:42]主要问题是这个时间不是标准的时间
- 前言在手写sql的时候,根据参数处理查询条件.select * from staff where 1 = 1 and staff_id in