Excel文件怎么转化csv文件
时间: 2025-04-16 10:24:52 浏览: 38
### 如何将Excel文件转换为CSV文件
#### 使用VBA批量转换方法
为了实现将多个Excel文件一次性全部转换为CSV格式,可以利用Visual Basic for Applications (VBA) 编写一段脚本,在Excel环境中运行此宏来完成操作。下面是一段能够遍历指定目录下的所有`.xls` 或 `.xlsx` 文件并将它们逐一保存为`.csv` 的VBA代码[^1]:
```vba
Sub ConvertXLStoCSV()
Dim MyFolder As String, MyFile As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "请选择包含Excel文件的文件夹"
If .Show <> -1 Then Exit Sub '如果未选择任何东西则退出子过程
MyFolder = .SelectedItems(1)
End With
ChDir MyFolder
MyFile = Dir(MyFolder & "\*.xls") '也可以改为 *.xlsx 适应不同版本的工作表
Do While MyFile <> ""
Workbooks.Open Filename:=MyFolder & "\" & MyFile
ActiveWorkbook.SaveAs Filename:=Left(MyFile, Len(MyFile) - 4), FileFormat:=xlCSVUTF8
ActiveWorkbook.Close SaveChanges:=False
MyFile = Dir
Loop
End Sub
```
这段代码会弹出对话框让用户挑选目标文件夹,之后自动处理该位置内的每一个Excel文档。
#### Java编程方式转换单个文件
对于希望采用Java语言开发的应用场景来说,则可以通过创建名为 `ExcelToCSVServiceImpl.java` 类似的服务类来进行转换工作。此类接收源Excel路径以及目的CSV存储地址作为参数执行相应的逻辑[^2]:
```java
import org.apache.poi.ss.usermodel.*;
import java.io.*;
public class ExcelToCSVServiceImpl {
public void convert(String excelFilePath, String csvOutputPath){
try{
Workbook workbook = WorkbookFactory.create(new FileInputStream(excelFilePath));
Sheet sheet = workbook.getSheetAt(0);
BufferedWriter writer = new BufferedWriter(new FileWriter(csvOutputPath));
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()){
Row currentRow = rowIterator.next();
StringBuilder oneLineBuilder = new StringBuilder();
Iterator<Cell> cellIterator = currentRow.cellIterator();
while(cellIterator.hasNext()){
Cell currentCell = cellIterator.next();
switch(currentCell.getCellType()) {
case STRING:
oneLineBuilder.append("\"").append(currentCell.getStringCellValue()).append("\"");
break;
case NUMERIC:
if(DateUtil.isCellDateFormatted(currentCell)){
oneLineBuilder.append(currentCell.getDateCellValue());
}else{
oneLineBuilder.append(currentCell.getNumericCellValue());
}
break;
default :
oneLineBuilder.append("");
}
if(cellIterator.hasNext())
oneLineBuilder.append(",");
}
writer.write(oneLineBuilder.toString());
writer.newLine();
}
writer.close();
workbook.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
```
上述实例展示了如何通过Apache POI库解析Excel数据并逐行写出至CSV文件中去。
#### Python简单命令行工具
另外一种便捷的方式就是借助Python及其第三方模块如pandas快速达成同样的效果。只需几行简单的指令就能轻松搞定文件之间的相互转变[^3]:
```python
import pandas as pd
from pathlib import Path
input_folder = './data/excels' # 输入Excel所在的文件夹路径
output_folder = './data/csvs/' # 输出CSV的目标文件夹路径
for file_path in Path(input_folder).glob('*.xlsx'):
df = pd.read_excel(file_path)
output_file_name = f"{file_path.stem}.csv"
full_output_path = str(Path(output_folder)/output_file_name)
df.to_csv(full_output_path, index=False)
print("转换已完成")
```
以上三种方案分别适用于不同的需求背景和技术栈偏好,可以根据实际情况选取最合适的一种实施。
阅读全文
相关推荐
















