将CSV转换为XLS

8

我正在处理一个分块的网络应用程序,我的同事给我提供了一个CSV对象,我需要将其转换为XLS格式,以便传递给他们构建的Excel处理器。

这个CSV对象是由字符";"分隔的。

我想知道如何通过编程将CSV对象转换为XLS。

5个回答

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();

我会尝试跟随你的例子,并稍后给你反馈,谢谢。 - Hallaghan
你如何将CSV转换为字符串数组? - user65165
如果你的 CSV 文件只包含非转义字符,你可以使用 string.Split 函数;否则,你可以使用其中一个可用的 CSV 解析库。 - vc 74

2
需要将输出格式设置为传统的 XLS 格式吗?如果可以接受 XLSXEPPlus 是一个很好的 .NET 库,用于编写电子表格。旧版 excellibrary 可以生成 XLS 文件。
只需几行代码即可解析 CSV 文件(只需小心双引号),并编写输出电子表格。

是的,其中一个要求是必须传递XLS格式。 - Hallaghan
在这种情况下,值得看一下excellibrary,它是一个编写XLS文件的旧库。http://code.google.com/p/excellibrary - Quppa

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();
    }

0

一种选择是使用第三方库创建XLS文件,另一种选择是使用COM互操作将Excel打开CSV文件并将其保存为XLS。


您在网上有第二个选项的示例吗? - Hallaghan

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接