C# 如何在从excel转换后删除csv文件中数字中的多余逗号
我有一个将excel文件转换为csv文件的下一个代码:C# 如何在从excel转换后删除csv文件中数字中的多余逗号,c#,excel,csv,C#,Excel,Csv,我有一个将excel文件转换为csv文件的下一个代码: Microsoft.Office.Interop.Excel.Application reportExcel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbooks reportBooks = null; Microsoft.Office.Interop.Excel.Workbook reportBook = n
Microsoft.Office.Interop.Excel.Application reportExcel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbooks reportBooks = null;
Microsoft.Office.Interop.Excel.Workbook reportBook = null;
Microsoft.Office.Interop.Excel.Sheets reportSheets = null;
Microsoft.Office.Interop.Excel._Worksheet reportSheet = null;
try
{
reportBooks = reportExcel.Workbooks;
reportBook = reportBooks.Open(excelFilePath);
reportSheets = reportBook.Sheets;
reportSheet = reportSheets.get_Item(1);
if (File.Exists(csvtempFile))
{
File.Delete(csvtempFile);
}
reportBook.SaveAs(csvtempFile, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows, Type.Missing, Type.Missing, false, false);
...
}
catch (Exception ex)
{
...
}
finally
{
...
}
我在csv文件中获得下一个文本:
...
"Some strings","309,145","4,964,398",,"1,194,780",,
...
如您所见,数字包含一个额外的逗号。请告诉我如何删除额外的逗号以获取下一个值:
"Some strings","309,145","4964,398",,"1194,780",,
查看此帖子:
您可以检查列类型,在每个要更改的列上设置一个范围,然后在导出之前设置数字格式
我知道它不漂亮,但如果你找不到更漂亮的东西可能会有用。你是说你想要
,“309145”,“4964398”,“1194780”,
来代替它?哪一个额外的逗号?那些表示千的,还是那些表示空列的?我写道:“正如你看到的,数字包含一个额外的逗号”,所以:那些表示千的。这就是你不应该实现自己的CSV解析器的原因。虽然这种格式看似简单,但它有很多角落案例和例外,就像你刚刚发现的那样。有很多库,如果你只搜索一点,它可以很好地处理这些情况。CSV文件还有另一个问题:没有元数据。除非对每个字段的含义有一个正式的规范,否则您可以知道字段中的数据类型。因此,我给您的建议是:不要制作您自己的解析器,而要对包含的数据使用一个转换器,该转换器可以处理它所使用的格式(例如,以逗号作为分隔符的数字)。