问题
I'm working in a web application separated in blocks and I'm getting a CSV object from a work mate of mine which I must convert into XLS to be passed into an Excel Processor they built. This CSV object is delimited by the character ";".
What I'd like to know is how I can convert the CSV object into XLS programatically.
回答1:
It should be easy for you to convert the CSV object into an array of arrays of strings and then do like in the following example (you'll need to add a reference to 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();
回答2:
Does the output need to be in the legacy XLS format? If XLSX is acceptable, EPPlus is a great .NET library for writing spreadsheets. The older excellibrary can produce XLS files.
Only a few lines of code should be necessary for parsing the CSV file (just be careful of double quotation marks) and writing the output spreadsheet.
回答3:
One option is to use a 3rd party library to create the XLS file, and the other is to use COM interop to manipulate Excel into opening the CSV file and save it as XLS.
回答4:
Would this C# Excel import data from CSV into Excel help? It seems to address what you need to do.
回答5:
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();
}
来源:https://stackoverflow.com/questions/4781478/convert-csv-into-xls