0

C#で小さなxlsxからcsv(文字区切り値)プログラムを作成しようとしています(Windowsユーザーのため)。

コンマ区切りの値のようにしたいのですが、コンマの代わりに、ハイブのデフォルト文字(「\ 001」だと思います)であるため、各セルは非表示の文字で区切られています。

この文字をC#のファイルに書き込むにはどうすればよいですか? "\001" 、 @"\001"、"\uFEFF" を試しましたが、成功しませんでした..ポインタはありますか?

コードは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Excel = Microsoft.Office.Interop.Excel;
namespace excel2csv
{

    class ExcelConverter
    {

        static void openExcel(string path,String outpath,String delim)
        {
            Excel.Application excelApp = new Excel.Application();
            Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(path, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);

            foreach(Excel.Worksheet worksheet in excelWorkbook.Worksheets){
                System.IO.StreamWriter file = new System.IO.StreamWriter(outpath+worksheet.Name+".csv", true);
                Excel.Range usedRange = worksheet.UsedRange;
                int nRows = usedRange.Rows.Count;
                int nCols = usedRange.Columns.Count;
                for (int iRow = 1; iRow <= nRows; iRow++)
                {
                    String line = "";
                    for (int iCount = 1; iCount <= nCols; iCount++)
                    {
                        usedRange= (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[iRow, iCount];
                        line += usedRange.Text + delim;
                       // Console.ReadLine();
                    }
                    Console.WriteLine();

                    file.WriteLine(line);
                }

                Console.WriteLine(worksheet.Name);
                file.Close();

            }
            Console.Read();
            excelWorkbook.Close();

        }


        static void Main(string[] args)
        {
            String path = @"C:\file.xlsx";
            String outpath = @"file";
            String delim = @"\001";
            openExcel(path,outpath, delim);
        }


    }
}
4

2 に答える 2