在Excel工作表中加载tsv / csv文件

这是我的代码。

public static string LoadPackage(DirectoryInfo outputDir, string name) { FileInfo newFile = new FileInfo(outputDir.FullName + @"\test.xlsx"); if (newFile.Exists) { newFile.Delete(); newFile = new FileInfo(outputDir.FullName + @"\test.xlsx"); } var format = new ExcelTextFormat(); format.Delimiter = '\t'; format.SkipLinesBeginning = 1; using (ExcelPackage package = new ExcelPackage()) { LoadSheet(package, outputDir, name); package.SaveAs(newFile); } return newFile.FullName; } 

之后,我调用LoadSheet方法,以填补我的Excel文件从TSV文件。

  public static void LoadSheet(ExcelPackage package, DirectoryInfo outputDir, string name) { var ws = package.Workbook.Worksheets.Add("Content"); var format = new ExcelTextFormat(); format.Delimiter = '\t'; format.SkipLinesBeginning = 2; format.SkipLinesEnd = 1; var range = ws.Cells["A1"].LoadFromText(new FileInfo(outputDir.FullName + "\\" + name), format, TableStyles.Medium27, false); } 

这是我点击button事件的代码

  if (BrowseFileUpload.HasFile) { var name = BrowseFileUpload.PostedFile.FileName; InputTextBox.Text = name; LoadData.LoadPackage(new System.IO.DirectoryInfo("C:\\Users\\Nemanja\\Downloads"), name); InfoLabel.Text = "Your data has been imported!!!"; InfoLabel.ForeColor = System.Drawing.Color.Blue; InfoLabel.Font.Size = 20; } 

一切都好,我创build新的Excel文件,工作表保存它,但它不会加载数据,我需要它加载内部的Excel文件。 这只是空的文件,或者我得到一个错误的文件损坏恢复你可以。

有人可以根据我的解释和这个代码找出什么是一个问题。 谢谢你们所有的好人

我认为这个问题很可能是源数据的格式。 我已经把以下示例放在一起,根据您的代码,它工作正常。

 var outFile = Path.ChangeExtension(filePath, ".xlsx"); using (var p = new ExcelPackage()) { var fmt = new ExcelTextFormat(); fmt.Delimiter = '\t'; fmt.SkipLinesBeginning = 2; fmt.SkipLinesEnd = 1; fmt.EOL = ((char)10).ToString(); // THIS LINE FIXED THE PROBLEM (UNIX NEWLINE) var ws = p.Workbook.Worksheets.Add("Imported Text"); ws.Cells[1, 1].LoadFromText(new FileInfo(filePath), fmt, TableStyles.Medium27, false); p.SaveAs(new FileInfo(outFile)); } 

尝试通过这个运行你的数据,看看你是否得到相同的问题。

更新

问题是文件中有一个unix风格的换行符–EPPlus预设默认情况下是一个Windows风格的换行符