public void Convert_Xls_To_CSV(string sourceFile, string targetFile)
{
try
{
// wrtr = new StreamWriter(targetFile);
StreamWriter wrtr = new StreamWriter(new FileStream(targetFile, FileMode.Create, FileAccess.Write, FileShare.Read));
DataTable dt = ConvertExcelFileToDataTable(sourceFile);
for (int x = 0; x < dt.Rows.Count; x++)
{
string rowString = "";
for (int y = 0; y < dt.Columns.Count; y++)
{
rowString += "\"" + dt.Rows[x][y].ToString() + "\",";
}
wrtr.WriteLine(rowString);
}
wrtr.Close();
wrtr.Dispose();
}
catch (Exception ex)
{
Error_lb.Text = ex.Message;
}
}
我正在使用此函数编写csv文件。未创建targetFile。
StreamWriter wrtr = new StreamWriter(new FileStream(targetFile, FileMode.Create, FileAccess.Write, FileShare.Read));
如果该文件不存在,该行是否应该创建该文件?
答案 0 :(得分:1)
简化您的号召;
sw = new StreamWriter(fileNameToSave, false)
来自 MSDN ;
StreamWriter(String,Boolean) - 使用默认编码和缓冲区大小为指定文件初始化StreamWriter类的新实例。如果文件存在,则可以覆盖或附加。如果该文件不存在,则此构造函数将创建一个新文件。
此外,您的用法与我有一些代码的内容类似;
var saveFile = new SaveFileDialog();
saveFile.InitialDirectory = Properties.Settings.Default.systemLogPath;
saveFile.RestoreDirectory = true;
saveFile.Title = "Filename to log to";
saveFile.Filter = "Text (*.txt)|*.txt|Log (*.log)|*.log";
if (saveFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
using (var sw = new StreamWriter(saveFile.FileName, false))
{
foreach (var item in messages.Items)
{
sw.Write(item.ToString() + Environment.NewLine);
}
}
}
也许这对你也有用。
答案 1 :(得分:1)
您的第二个参数是指FileMode
Enumeration,其中包含以下关于FileMode.Create
:
指定操作系统应创建新文件。如果该文件已存在,则会被覆盖。