将.XLS转换为制表符分隔的.TXT

我可以以某种方式将Excel .XLS文件转换为txt-tsv(制表符分隔值)文件,使用C#?

您可以通过OleDb(ADO.NET提供程序)轻松读取该XLS文件,并创buildStreamWriter对象以将数据写入文本/ TSV文件。

 using (OleDbConnection cn = new OleDbConnection()) { using (OleDbCommand cmd = new OleDbCommand()) { cn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"C:\path\file.xls" + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";"; cmd.Connection = cn; cmd.CommandText = "select * from [Sheet1$]"; using (OleDbDataAdapter adp = new OleDbDataAdapter(cmd)) { DataTable dt = new DataTable(); adp.Fill(dt); using (StreamWriter wr = new StreamWriter(@"C:\path\flie.tsv")) { foreach (DataRow row in dt.Rows) { wr.WriteLine(row[0] + "\t" + row[1]); } } } } } 

使用OleDb可能会非常棘手,并可能导致问题取决于电子表格创build的Excel版本。 例如,上面的例子可以使用.xls,但不能使用.xlsx。 您将不得不将连接string从“Microsoft.Jet.OLEDB.4.0”更改为“Microsoft.ACE.OLEDB.12.0”以弥补。 但是,对于所有的Excel表格,这仍然不是普遍的。 我会使用Microsoft.Office.Interop.Excel如下

 Microsoft.Office.Interop.Excel.Application myExcel; Microsoft.Office.Interop.Excel.Workbook myWorkbook; Microsoft.Office.Interop.Excel.Worksheet worksheet; myExcel = new Microsoft.Office.Interop.Excel.Application(); myExcel.Workbooks.Open(inputFileName.xls, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); myWorkbook = myExcel.ActiveWorkbook; worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkbook.Worksheets[1]; myWorkbook.SaveAs(outputFileName.txt, Microsoft.Office.Interop.Excel.XlFileFormat.xlTextWindows, Missing.Value, Missing.Value, Missing.Value, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); myWorkbook.Close(false, Missing.Value, Missing.Value); myExcel.Quit(); 

没有循环,没有bs。 只需复制,粘贴和更改您的文件名。 我看到的唯一问题是有时myExcel.Quit()似乎不能正常工作,并且Excel的实例保持打开状态。 解决这个问题的方法是通过程序手动杀死进程,但是我将把它保存为一个不同的讨论。