Я думаю, что расширение - это ваша проблема. Я попробовал следующий код с расширениями CSV и TXT, он работал как TXT, но не как CSV.
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;
public class ExcelInteropTest
{
//private static Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
public static void Parse(String filename)
{
var _app = new Excel.Application();
var _workbooks = _app.Workbooks;
_workbooks.OpenText(filename,
DataType: Excel.XlTextParsingType.xlDelimited,
TextQualifier: Excel.XlTextQualifier.xlTextQualifierNone,
ConsecutiveDelimiter: true,
Semicolon: true);
Excel.Sheets sheets = _workbooks[1].Worksheets;
Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);
List<String[]> excelData = new List<string[]>();
for (int i = 1; i <= 6; i++)
{
Excel.Range range = worksheet.get_Range("A" + i.ToString(), "Z" + i.ToString());
System.Array myvalues = (System.Array)range.Cells.Value;
string[] strArray = myvalues.OfType<object>().Select(o => o.ToString()).ToArray();
excelData.Add(strArray);
}
foreach (var item in excelData)
{
Console.WriteLine(String.Join("|",item));
}
}
}
Все, что я делал, это создавал массив строк для каждой строки и добавлял его в список, затем я просто записывал каждый массив (соединенный в трубе '|', и, похоже, он правильно разбивал все, когда TXT был расширением. Я предполагаю, что файлы CSV специального характера в Excel могут вызывать проблему