gpt4 book ai didi

c# - 有什么简单的方法可以将 .xls 文件转换为 .csv 文件吗? (Excel)

转载 作者:IT王子 更新时间:2023-10-29 03:55:31 27 4
gpt4 key购买 nike

有什么简单的方法可以将 .xls 文件转换为 .csv 文件吗? (Excel)

在 C# 代码中?

我的意思是将现有的 .xls 文件转换为 .csv 文件

最佳答案

这是执行此操作的 C# 方法。请记住添加您自己的错误处理 - 这主要是为了简洁起见假设一切正常。它只是 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();
}
}
}

关于c# - 有什么简单的方法可以将 .xls 文件转换为 .csv 文件吗? (Excel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536181/

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