在做一个系统,数据没有存入数据库,从控件中获取后要csv格式,但打开后其中有一些乱码,用记事本打开就没有问题?
网上看了一些方法,也搞不了//保存并导出为CVS文件格式
private void btnSave_Click(object sender, EventArgs e)
{
// 数据填写规则校验
if (this.isSave() == false)
{
MessageBox.Show("很抱歉,请完整填写好表单内容!");
return;
}
else
{
//数据保存并导出
//取值
string writer = this.txtwriter.Text;
string checker = this.txtchecker.Text;
string years = this.cboyears.Text.Trim();
string month = this.cbomonth.Text.Trim();
string logDate = years + "-" + month;
// 定义数组
string[] str = new string[29];
str[0] = hos;
str[1] = this.txttotalTrainingDoctor.Text.Trim();
str[2] = this.txttotalTrainingNurse.Text.Trim(); str[3] = this.txtgynecologyTrainingDoctor.Text.Trim();
str[4] = this.txtgynecologyTrainingNurse.Text.Trim(); str[5] = this.txtfield1.Text.Trim();
str[6] = this.txtfield2.Text.Trim();
str[7] = this.txtfield3.Text.Trim();
str[8] = this.txtfield4.Text.Trim(); str[9] = this.txtdevice1.Text.Trim();
str[10] = this.txtdevice2.Text.Trim();
str[11] = this.txtdevice3.Text.Trim();
str[12] = this.txtdevice4.Text.Trim(); str[13] = this.cbosoftwareNetware.Text.Trim(); str[14] = this.chksystemSetup1.Checked ? "1" : "0";
str[15] = this.chksystemSetup2.Checked ? "1" : "0";
str[16] = this.chksystemSetup3.Checked ? "1" : "0";
str[17] = this.chksystemSetup4.Checked ? "1" : "0";
str[18] = this.chksystemSetup5.Checked ? "1" : "0";
str[19] = this.chksystemSetup6.Checked ? "1" : "0";
str[20] = this.chksystemSetup7.Checked ? "1" : "0";
str[21] = this.chksystemSetup8.Checked ? "1" : "0";
str[22] = this.chksystemSetup9.Checked ? "1" : "0";
str[23] = this.chksystemSetup10.Checked ? "1" : "0";
str[24] = logDate;
str[25] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
str[26] = this.txttdTotal.Text.Trim();
str[27] = this.txtgyTotal.Text.Trim();
str[28] = "盆底";
List<string[]> generallist = new List<string[]>();
generallist.Add(str);
FileGenerator fileGenerator = new FileGenerator();
// 根据文件类型生成导出文件
fileGenerator.GenerateFileByType(generallist, "SetupReport", FileGenerator.FileType.CSV);
this.Controls.Clear();
MessageBox.Show("建立成功!!");
this.Close();
}
}
网上看了一些方法,也搞不了//保存并导出为CVS文件格式
private void btnSave_Click(object sender, EventArgs e)
{
// 数据填写规则校验
if (this.isSave() == false)
{
MessageBox.Show("很抱歉,请完整填写好表单内容!");
return;
}
else
{
//数据保存并导出
//取值
string writer = this.txtwriter.Text;
string checker = this.txtchecker.Text;
string years = this.cboyears.Text.Trim();
string month = this.cbomonth.Text.Trim();
string logDate = years + "-" + month;
// 定义数组
string[] str = new string[29];
str[0] = hos;
str[1] = this.txttotalTrainingDoctor.Text.Trim();
str[2] = this.txttotalTrainingNurse.Text.Trim(); str[3] = this.txtgynecologyTrainingDoctor.Text.Trim();
str[4] = this.txtgynecologyTrainingNurse.Text.Trim(); str[5] = this.txtfield1.Text.Trim();
str[6] = this.txtfield2.Text.Trim();
str[7] = this.txtfield3.Text.Trim();
str[8] = this.txtfield4.Text.Trim(); str[9] = this.txtdevice1.Text.Trim();
str[10] = this.txtdevice2.Text.Trim();
str[11] = this.txtdevice3.Text.Trim();
str[12] = this.txtdevice4.Text.Trim(); str[13] = this.cbosoftwareNetware.Text.Trim(); str[14] = this.chksystemSetup1.Checked ? "1" : "0";
str[15] = this.chksystemSetup2.Checked ? "1" : "0";
str[16] = this.chksystemSetup3.Checked ? "1" : "0";
str[17] = this.chksystemSetup4.Checked ? "1" : "0";
str[18] = this.chksystemSetup5.Checked ? "1" : "0";
str[19] = this.chksystemSetup6.Checked ? "1" : "0";
str[20] = this.chksystemSetup7.Checked ? "1" : "0";
str[21] = this.chksystemSetup8.Checked ? "1" : "0";
str[22] = this.chksystemSetup9.Checked ? "1" : "0";
str[23] = this.chksystemSetup10.Checked ? "1" : "0";
str[24] = logDate;
str[25] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
str[26] = this.txttdTotal.Text.Trim();
str[27] = this.txtgyTotal.Text.Trim();
str[28] = "盆底";
List<string[]> generallist = new List<string[]>();
generallist.Add(str);
FileGenerator fileGenerator = new FileGenerator();
// 根据文件类型生成导出文件
fileGenerator.GenerateFileByType(generallist, "SetupReport", FileGenerator.FileType.CSV);
this.Controls.Clear();
MessageBox.Show("建立成功!!");
this.Close();
}
}
然后使用Encoding类:using System;
using System.Text;public class SamplesEncoding { public static void Main() { // The characters to encode:
// Latin Small Letter Z (U+007A)
// Latin Small Letter A (U+0061)
// Combining Breve (U+0306)
// Latin Small Letter AE With Acute (U+01FD)
// Greek Small Letter Beta (U+03B2)
// a high-surrogate value (U+D8FF)
// a low-surrogate value (U+DCFF)
char[] myChars = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2', '\uD8FF', '\uDCFF' }; // Get different encodings.
Encoding u7 = Encoding.UTF7;
Encoding u8 = Encoding.UTF8;
Encoding u16LE = Encoding.Unicode;
Encoding u16BE = Encoding.BigEndianUnicode;
Encoding u32 = Encoding.UTF32; // Encode the entire array, and print out the counts and the resulting bytes.
PrintCountsAndBytes( myChars, u7 );
PrintCountsAndBytes( myChars, u8 );
PrintCountsAndBytes( myChars, u16LE );
PrintCountsAndBytes( myChars, u16BE );
PrintCountsAndBytes( myChars, u32 ); }
public static void PrintCountsAndBytes( char[] chars, Encoding enc ) { // Display the name of the encoding used.
Console.Write( "{0,-30} :", enc.ToString() ); // Display the exact byte count.
int iBC = enc.GetByteCount( chars );
Console.Write( " {0,-3}", iBC ); // Display the maximum byte count.
int iMBC = enc.GetMaxByteCount( chars.Length );
Console.Write( " {0,-3} :", iMBC ); // Encode the array of chars.
byte[] bytes = enc.GetBytes( chars ); // Display all the encoded bytes.
PrintHexBytes( bytes ); }
public static void PrintHexBytes( byte[] bytes ) { if (( bytes == null ) || ( bytes.Length == 0 ))
Console.WriteLine( "<none>" );
else {
for ( int i = 0; i < bytes.Length; i++ )
Console.Write( "{0:X2} ", bytes[i] );
Console.WriteLine();
} }}
/*
This code produces the following output.System.Text.UTF7Encoding : 18 23 :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D
System.Text.UTF8Encoding : 12 24 :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF
System.Text.UnicodeEncoding : 14 16 :7A 00 61 00 06 03 FD 01 B2 03 FF D8 FF DC
System.Text.UnicodeEncoding : 14 16 :00 7A 00 61 03 06 01 FD 03 B2 D8 FF DC FF
System.Text.UTF32Encoding : 24 32 :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00*/