CSV文件格式
1、CSV
文件默认以英文逗号(,)做为列分隔符,换行符(\n)作为行分隔符。
2、CSV
默认认为由
""
括起来的内容是一个栏位,这时不管栏位内容里有除
"
之外字符的任何字符都可以按原来形式引用。
3、若字段内容里含有
",
这时只需将
"
替换成两个双引号
("")
即可。
CSV
会将字段里的两个双引号
""
显示成一个。
4、应用char(9)表示按照文本形式显示(实例红色字体部分)。
应用实例
private void ExportToSCV(GridView gridview, string path)
{
try
{
if (File.Exists(path) && IsFileInUse(path))
{
MessageBox.Show("文件被占用,请先关闭文件!");
return;
}
StringBuilder sb = new StringBuilder();
string strCols = string.Empty;
foreach (GridColumn col in gridview.Columns)
{
if (!col.Visible) continue;
strCols += col.Caption;
strCols += ",";
}
strCols = strCols.Remove(strCols.Length - 1, 1);
sb.AppendLine(strCols);
for (int i = 0; i < gridview.RowCount; i++)
{
string strRow = string.Empty;
foreach (GridColumn col in gridview.Columns)
{
if (!col.Visible) continue;
// 应用char(9)表示按照文本形式显示
string strValue ="\"" + ((char)(9)).ToString() + gridview.GetRowCellDisplayText(i, col) + "\"";
strRow += strValue;
strRow += ",";
}
strRow = strRow.Remove(strRow.Length - 1, 1);
sb.AppendLine(strRow);
}
using (StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("GB2312")))
{
sw.Write(sb.ToString());
sw.Flush();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private bool IsFileInUse(string fileName)
{
bool inUse = true;
FileStream fs = null;
try
{
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None);
inUse = false;
}
catch
{
}
finally
{
if (fs != null)
fs.Close();
}
return inUse;//true表示正在使用,false没有使用
}