【发布时间】:2021-11-09 15:57:07
【问题描述】:
尝试在 Excel 中打开 csv 文件时出现 C# 错误。您尝试打开的文件与文件扩展名指定的格式不同。
代码如下:
private void BtnExportExcel_Click(object sender, EventArgs e)
{
string[] data = rtbConvData.Text.Split('\n');
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "CSV (Comma delimited)(*.csv)|*.csv";
//sfd.FileName = "Data Conversion " + System.DateTime.Now.ToString("MM_dd_yyyy");
sfd.FileName = lblFileName.Text;
if (sfd.ShowDialog() == DialogResult.OK)
{
object misValue = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application xlexcel = new Microsoft.Office.Interop.Excel.Application();
xlexcel.DisplayAlerts = false;
Workbook xlWorkBook = xlexcel.Workbooks.Add(misValue);
Worksheet xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.get_Item(1);
for (int i = 1; i < data.Length; i++)
{
xlWorkSheet.Cells[i, 1] = data[i - 1];
}
// Save the excel file under the captured location from the SaveFileDialog
xlWorkBook.SaveAs(sfd.FileName, XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlexcel.DisplayAlerts = true;
xlWorkBook.Close(true, misValue, misValue);
xlexcel.Quit();
ReleaseObject(xlWorkSheet);
ReleaseObject(xlWorkBook);
ReleaseObject(xlexcel);
}
}
【问题讨论】:
-
看起来您正在将其保存为 CSV,但制作的是 XLSX 文件。如果您需要 CSV,请执行此操作,不要使用 Excel。
-
Excel 的原生格式不是 CSV! 如果你在 Excel 正常保存的文件上加上 csv 扩展名,它会混淆大多数软件,包括 Excel。
-
@JoelCoehoorn 您的代码将 Excel 文件保存为 Excel (XlFileFormat.xlWorkbookNormal),扩展名错误。这段代码意义不大。如果要保存 CSV 文件,为什么还要使用 Excel? CSV 是一个普通的旧文本文件,没有表格、单元格等。您可以轻松地将逗号分隔的值写入文本文件,或者在必要时使用 CsvHelper 之类的库来处理转义
-
另一方面,如果你想创建一个 Excel 文件不要用
.csv扩展名保存它。您也不需要 Excel 来创建 Excel 文件,您可以使用 Epplus 或 ClosedXML 等库
标签: c# excel csv file-format