在本规范中,我收到一些错误,即班级工厂不可用。该程序是基于分号转换csv(逗号分隔值)文件int xls(Microsoft Excel)文件。任何人都可以帮助我。
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();
}
}
}
答案 0 :(得分:0)
使用Excel打开csv文件并将其另存为xlsx
答案 1 :(得分:0)
您的问题如下:
Excel索引列使用字母而不是数字,如A,B,C,D,E,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];
}
就是这样。你不需要编写内部循环,因为它会花费你很多无用的处理。