关于在C#中将数据导出到txt文件,格式问题

emailqjc 2011-12-28 02:45:22
最近在做一项目需要将数据库的数据导出到TXT文件里,供盘点机(下位机)读取 ,可是我将文件导出后,在盘点机里不能读,提示格式错误!我在网上查了一下,好象是什么格式问题,请问怎么设置格式?我的代码如下:
注意:盘点机程序是C写的

StreamWriter mFileName = new StreamWriter(fileName, true, Encoding.Default);
mFileName.WriteLine(unicodeString);
mFileName.Flush();
mFileName.Close();
...全文
628 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
doubleu2005 2011-12-28
  • 打赏
  • 举报
回复
好鼓励鼓励!
zdzcool 2011-12-28
  • 打赏
  • 举报
回复
找到问题就好。其实在调试的时候,就是看一下对方需要什么样的格式,而你提供的是什么样子的格式。差别在哪里。
找到这个,实现就不是什么问题了。
emailqjc 2011-12-28
  • 打赏
  • 举报
回复
谢谢各位,找到问题了,是哪个截取指定字节长度的方法出问题了,与大家一起分享一下:
/// <summary>
/// 取指定长度的字符串
/// </summary>
/// <param name="Source">被格式化字符串</param>
/// <param name="Length">截取长度</param>
/// <returns></returns>
private string SubString(string Source ,int Length)
{
string result=string.Empty ;

Byte[] tmpByteArr;
tmpByteArr=System.Text.Encoding.Default.GetBytes(Source);

if (Length>=tmpByteArr.Length )
{
result =Source ;

result = result + new string(Convert.ToChar(" "), Length - tmpByteArr.Length);
}
else
{
int temp=0;

for (int i=0;i<tmpByteArr.Length ;i++ )
{
if (tmpByteArr[i]>127 )
{
temp=temp +1;
}
}

if (temp%2==1 )
{
result = System.Text.Encoding.Default.GetString(tmpByteArr, 0, Length - 1)+" ";
} else
{
result = System.Text.Encoding.Default.GetString(tmpByteArr, 0, Length) ;
}
}
if (Length > result.Length)
{
int k = 0;
}
tmpByteArr = System.Text.Encoding.Default.GetBytes(result );

result = System.Text.Encoding.Default.GetString(tmpByteArr, 0, Length);
return result;
}
阿云ivan 2011-12-28
  • 打赏
  • 举报
回复
先不要急着看代码,应先去看你产生出来的txt文件内容。
然后看哪里没达到对方的要求,之后再做针对性改正
emailqjc 2011-12-28
  • 打赏
  • 举报
回复
我刚才问了盘点机那边了,说是我各个字段长度不对,在中英文混合情况下,如何截取指定(字节)长度的字符,我的代码如下,难道是我这个代码出问题了:
public string GetFirstString(string stringToSub, int length)
{
Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
char[] stringChar = stringToSub.ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = 0;
bool isCut = false;
for (int i = 0; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()))
{
sb.Append(stringChar[i]);
nLength += 2;
}
else
{
sb.Append(stringChar[i]);
nLength = nLength + 1;
}

if (nLength > length)
{
isCut = true;
break;
}
}
if (isCut)
//return sb.ToString() + "..";
return sb.ToString().Substring(0,sb.Length -2);
else
return sb.ToString();
}
cjh200102 2011-12-28
  • 打赏
  • 举报
回复
楼上说得不错,具体什么格式直接咨询盘点机
sdl2005lyx 2011-12-28
  • 打赏
  • 举报
回复
给你一个写好的方法:

public static void WriteCSV(string filePathName,bool append, List<String[]> ls)
{
StreamWriter fileWriter=new StreamWriter(filePathName,append,Encoding.Default);
foreach(String[] strArr in ls)
{
fileWriter.WriteLine(String.Join (“,",strArr) );//这里换成你实际的分隔符
}
fileWriter.Flush();
fileWriter.Close();
}
阿云ivan 2011-12-28
  • 打赏
  • 举报
回复
怎么设置格式?
这个应该去问盘点机程序才对!

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧