gpt4 book ai didi

vb.net - 将 xls 文件转换为 csv,但添加了额外的行?

转载 作者:行者123 更新时间:2023-12-04 21:40:45 27 4
gpt4 key购买 nike

所以,我正在尝试将一些 xls 文件转换为 csv,一切都很好,除了一部分。 Excel 互操作中的 SaveAs 函数似乎导出了所有行(包括空白行)。当我使用记事本查看文件时,我可以看到这些行。 (我期望的所有行,15 行带有两个单引号,然后其余的只是空白)。然后我有一个存储过程,将这个 csv 导入所需的表(这适用于已手动转换为 csv 的电子表格(例如打开、文件->另存为等)

这是我在代码中用于 SaveAs 的代码行。我尝试过 xlCSV、xlCSVWindows 和 xlCSVDOS 作为我的文件格式,但它们都做同样的事情。

wb.SaveAs(aFiles(i).Replace(".xls", "B.csv"), Excel.XlFileFormat.xlCSVMSDOS, , , , False) 'saves a copy of the spreadsheet as a csv

那么,是否有一些额外的步骤/设置我需要做才能不让 extraneuos 行显示在 csv 中?

请注意,如果我打开这个新创建的 csv,然后单击另存为,然后选择 csv,我的程序会再次喜欢它。

最佳答案

当您从工作簿创建 CSV 时,将根据您的 UsedRange 生成 CSV。由于可以简单地通过将格式应用于单元格(没有任何内容)来扩展 UsedRange,这就是您得到空白行的原因。 (由于这个问题,您也可以得到空白列。)

当您打开生成的 CSV 时,由于没有内容或格式,所有这些无内容单元格不再对 UsedRange 有贡献(因为只有值保存在 CSV 中)。

您可以通过在保存之前更新您使用的范围来纠正此问题。这是我在 VBA 中编写的一个简短的子程序,可以解决问题。此代码会使您丢失所有格式,但我认为这并不重要,因为您无论如何都要保存到 CSV。我将把转换为 VB.Net 留给你。

Sub CorrectUsedRange()
Dim values
Dim usedRangeAddress As String
Dim r As Range
'Get UsedRange Address prior to deleting Range
usedRangeAddress = ActiveSheet.UsedRange.Address
'Store values of cells to array.
values = ActiveSheet.UsedRange
'Delete all cells in the sheet
ActiveSheet.Cells.Delete
'Restore values to their initial locations
Range(usedRangeAddress) = values
End Sub

关于vb.net - 将 xls 文件转换为 csv,但添加了额外的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com