有没有简单的方法将.xls文件转换为.csv文件? (EXCEL)

有没有简单的方法将.xls文件转换为.csv文件? (EXCEL)

在C#代码?

我的意思是采取现有的.xls文件,并将其转换为.csv文件

提前致谢

检出Excel对象中的.SaveAs()方法。

 wbWorkbook.SaveAs("c:\yourdesiredFilename.csv", Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV) 

或以下:

 public static void SaveAs() { Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.ApplicationClass(); Microsoft.Office.Interop.Excel.Workbook wbWorkbook = app.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel.Sheets wsSheet = wbWorkbook.Worksheets; Microsoft.Office.Interop.Excel.Worksheet CurSheet = (Microsoft.Office.Interop.Excel.Worksheet)wsSheet[1]; Microsoft.Office.Interop.Excel.Range thisCell = (Microsoft.Office.Interop.Excel.Range)CurSheet.Cells[1, 1]; thisCell.Value2 = "This is a test."; wbWorkbook.SaveAs(@"c:\one.xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wbWorkbook.SaveAs(@"c:\two.csv", Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wbWorkbook.Close(false, "", true); } 

这是一个C#方法来做到这一点。 请记住添加你自己的error handling – 这主要是为了简洁起见。 它只是4.0+框架,但主要是因为可选的worksheetNumber参数。 如果您需要支持早期版本,则可以重载该方法。

 static void ConvertExcelToCsv(string excelFilePath, string csvOutputFile, int worksheetNumber = 1) { if (!File.Exists(excelFilePath)) throw new FileNotFoundException(excelFilePath); if (File.Exists(csvOutputFile)) throw new ArgumentException("File exists: " + csvOutputFile); // connection string var cnnStr = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;IMEX=1;HDR=NO\"", excelFilePath); var cnn = new OleDbConnection(cnnStr); // get schema, then data var dt = new DataTable(); try { cnn.Open(); var schemaTable = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (schemaTable.Rows.Count < worksheetNumber) throw new ArgumentException("The worksheet number provided cannot be found in the spreadsheet"); string worksheet = schemaTable.Rows[worksheetNumber - 1]["table_name"].ToString().Replace("'", ""); string sql = String.Format("select * from [{0}]", worksheet); var da = new OleDbDataAdapter(sql, cnn); da.Fill(dt); } catch (Exception e) { // ??? throw e; } finally { // free resources cnn.Close(); } // write out CSV data using (var wtr = new StreamWriter(csvOutputFile)) { foreach (DataRow row in dt.Rows) { bool firstLine = true; foreach (DataColumn col in dt.Columns) { if (!firstLine) { wtr.Write(","); } else { firstLine = false; } var data = row[col.ColumnName].ToString().Replace("\"", "\"\""); wtr.Write(String.Format("\"{0}\"", data)); } wtr.WriteLine(); } } } 

我需要做同样的事情。 我结束了与Kman类似的事情

  static void ExcelToCSVCoversion(string sourceFile, string targetFile) { Application rawData = new Application(); try { Workbook workbook = rawData.Workbooks.Open(sourceFile); Worksheet ws = (Worksheet) workbook.Sheets[1]; ws.SaveAs(targetFile, XlFileFormat.xlCSV); Marshal.ReleaseComObject(ws); } finally { rawData.DisplayAlerts = false; rawData.Quit(); Marshal.ReleaseComObject(rawData); } Console.WriteLine(); Console.WriteLine($"The excel file {sourceFile} has been converted into {targetFile} (CSV format)."); Console.WriteLine(); } 

如果有多个工作表,在转换中会丢失,但是您可以循环使用多个工作表并将其保存为csv。