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);
}
}
}