我正在一个以块分隔的Web应用程序中工作,我从我的工作伙伴处获得了一个CSV对象,我必须将其转换为XLS才能传递给他们构建的Excel处理器。 此CSV对象由字符“;”分隔。
我想知道的是如何以编程方式将CSV对象转换为XLS。
答案 0 :(得分:16)
您应该很容易将CSV对象转换为字符串数组数组,然后执行以下示例(您需要添加对Microsoft.Office.Interop.Excel的引用):
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application excel = new Excel.Application();
Excel.Workbook workBook = excel.Workbooks.Add();
Excel.Worksheet sheet = workBook.ActiveSheet;
var CsvContent = new string[][]
{
new string[] {"FirstName", "UserName", "PostCode", "City"},
new string[] {"John", "Smith", "4568", "London"},
new string[] {"Brian", "May", "9999", "Acapulco"}
};
for (int i = 0; i < CsvContent.Length; i++)
{
string[] CsvLine = CsvContent[i];
for (int j = 0; j < CsvLine.Length; j++)
{
sheet.Cells[i + 1, j + 1] = CsvLine[j];
}
}
workBook.SaveAs(@"C:\Temp\fromCsv.xls");
workBook.Close();
答案 1 :(得分:2)
输出是否必须采用传统XLS格式?如果XLSX可以接受,EPPlus是一个很棒的.NET库,用于编写电子表格。较旧的excellibrary可以生成XLS文件。
解析CSV文件时只需要几行代码(只需注意双引号)并编写输出电子表格。
答案 2 :(得分:0)
一种选择是使用第三方库创建XLS文件,另一种选择是使用COM互操作来操作Excel以打开CSV文件并将其另存为XLS。
答案 3 :(得分:0)
这C# Excel import data from CSV into Excel会有帮助吗?它似乎解决了你需要做的事情。
答案 4 :(得分:0)
using Excel = Microsoft.Office.Interop.Excel;
public void Convert_CSV_To_Excel()
{
// Rename .csv To .xls
System.IO.File.Move(@"d:\Test.csv", @"d:\Test.csv.xls");
var _app = new Excel.Application();
var _workbooks = _app.Workbooks;
_workbooks.OpenText("Test.csv.xls",
DataType: Excel.XlTextParsingType.xlDelimited,
TextQualifier: Excel.XlTextQualifier.xlTextQualifierNone,
ConsecutiveDelimiter: true,
Semicolon: true);
// Convert To Excle 97 / 2003
_workbooks[1].SaveAs("NewTest.xls", Excel.XlFileFormat.xlExcel5);
_workbooks.Close();
}