在分号的基础上使用C#将csv转换为xls
问题描述:
在此代码中,出现类工厂不可用的错误。本程序是关于基于分号转换csv(逗号分隔值)文件int xls(Microsoft Excel)文件。有人能帮我解决吗?在分号的基础上使用C#将csv转换为xls
using Microsoft.Office.Interop.Excel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel;
namespace ReadWriteCSV
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Excel.Application excel = new Excel.Application();
Excel.Workbook workBook = excel.Workbooks.Add();
Excel.Worksheet sheet = workBook.ActiveSheet;
string fullPath = @"D:\Work\Sep-14\ReadWriteCSV\ReadWriteCSV\File\diff_16122014095440.csv";
string[] fileRows = File.ReadAllLines(fullPath, Encoding.UTF8);
foreach (string rows in fileRows)
{
var columns = rows.Split(';');
for (int j = 0; j < fileRows.Length; j++)
{
for (int i = 0; i < columns.Length; i++)
{
List<string> elements = new List<string>();
foreach (string col in columns)
{
elements.Add(col);
sheet.Cells[i + 1, j + 1] = col;
}
}
}
}
workBook.SaveAs(@"D:\Work\Sep-14\ReadWriteCSV\ReadWriteCSV\File\WriteXls.xlsx");
workBook.Close();
}
}
}
答
使用Excel并将其保存为XLSX
答
你的问题如下打开CSV文件:使用字母,如A,B,C,d,E
Excel的索引列不是数字, F,G,H等等。
您需要将数字索引转换为字母索引。如果没有超过26列的列,则可以使用ASCII作为偏移量。
sheet.Cells[i + 1, ((char)(j+ 65)).ToString()] = col; //65 is ASCII for letter A
编辑:
你的代码中有一个问题。为什么你要在内部循环中重复遍历列?与外部foreach循环相同。所有你需要的代码是这样的:
for (int i = 0; i< fileRows.length;i++)
{
string row = fileRows[i];
string[] columns = row.Split(';');
for (int j =0; j<columns.length;j++)
sheet.Cells[i + 1, ((char)(j+ 65)).ToString()] = columns[j];
}
就是这样。你不需要编写内部循环,因为它会花费你很多无用的处理。
我做了同样的事情。请建议其他解决方案或在上述程序中找到错误 – 2014-12-19 11:54:25