我想使用C#将一个.xls或.xlsx文件转换为.csv格式

3
我正在尝试用C#编写代码将.xls/.xlsx文件转换为.csv文件,我在打开文件后保存为.Csv,但结果文件仍具有所有Excel属性(如合并单元格、标题等),但当我查看属性时,它显示文件类型为.csv。在我的代码中,我打开一个Excel文件,然后使用SaveAs保存它。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop;
using Excel = Microsoft.Office.Interop.Excel;


namespace ConsoleApp2
{
    class Program

    {
        static void conversion(string sourcepath)
        {
            Excel.Application xlapp;
            xlapp =new Excel.Application();
            xlapp.Visible = true;
            // Excel.Workbook book = xlapp.Workbooks.Open(sourcepath);
            
            Excel.Workbook xlworkbook = xlapp.Workbooks.Open(sourcepath);
            xlworkbook= xlapp.ActiveWorkbook;
            Excel.Worksheet xlsheet = xlapp.ActiveSheet;
            xlsheet.SaveAs(@"C:\Users\<username>\Desktop\sample\new.csv");



       
        }

        static void Main(string[] args)
        {
            
            string path= Console.ReadLine();
            conversion(path);
            
        }
    }}

我希望得到一个纯净的 .csv 文件,只包含文本,不包含合并单元格、标题等其他元素,可以在 Excel 中打开。

3个回答

4

您必须明确指定FileFormat,参见此处

xlsheet.SaveAs(@"C:\Users\AbrahamSamuel\Desktop\sample\new.csv", XlFileFormat.xlCSV);

根据您的需求,xlCSV、xlCSVUTF8或xlCSVWindows可能是正确的选择。


0

请查看Excel对象中的.SaveAs()方法。

  xlsheet.SaveAs(@"C:\Users\AbrahamSamuel\Desktop\sample\new.csv", Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV)

另一种方法如下所示。

public static void SaveAs()
{
    Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.ApplicationClass();
    Microsoft.Office.Interop.Excel.Workbook xlsheet= app.Workbooks.Add(Type.Missing);
    Microsoft.Office.Interop.Excel.Sheets wsSheet = xlsheet.Worksheets;
    Microsoft.Office.Interop.Excel.Worksheet CurSheet = (Microsoft.Office.Interop.Excel.Worksheet)wsSheet[1];

    Microsoft.Office.Interop.Excel.Range thisCell = (Microsoft.Office.Interop.Excel.Range)CurSheet.Cells[1, 1];

    thisCell.Value2 = "This is a test.";

    xlsheet.SaveAs(@"C:\Users\AbrahamSamuel\Desktop\sample\new.csv", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    xlsheet.SaveAs(@"C:\Users\AbrahamSamuel\Desktop\sample\new.csv", Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

    xlsheet.Close(false, "", true);
}

0

没事了,我找到了。

 xlsheet.SaveAs(destination, Excel.XlFileFormat.xlCSV);
 xlworkbook.Close();

必须使用 Excel.XlFileFormat.xlCSV


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