Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#如何将阿拉伯语字符编码为excel_C#_Excel - Fatal编程技术网

c#如何将阿拉伯语字符编码为excel

c#如何将阿拉伯语字符编码为excel,c#,excel,C#,Excel,我正在尝试将datagridview数据导出到excel,但可能会将数据导出为阿拉伯语 将数据从datagridview导出到excel,然后打开excel时,存储的数据如下所示 fTOCK U ID是什么意思?????仓库ID???????? 1.1000000000 28 ???? 6000万卢比??????0 1 1 2.1000000001 5 ???? 3000040000R-N??????0 1 2 3.1000000002 9 ????

我正在尝试将datagridview数据导出到excel,但可能会将数据导出为阿拉伯语 将数据从datagridview导出到excel,然后打开excel时,存储的数据如下所示 fTOCK U ID是什么意思?????仓库ID???????? 1.1000000000 28 ???? 6000万卢比??????0 1 1 2.1000000001 5 ???? 3000040000R-N??????0 1 2 3.1000000002 9 ???? 19000 30000卢比??????01 3

private void SaveExportedData(DataGridView DatGrdV, string filename)
        {
            string dataExport = "";
            string fColumnHeader = "";
            for (int j = 0; j < DatGrdV.Columns.Count; j++)
                fColumnHeader = fColumnHeader.ToString() + 
                Convert.ToString(DatGrdV.Columns[j].HeaderText) + "\t";
            dataExport += fColumnHeader + "\r\n";
            for (int i = 0; i < DatGrdV.RowCount - 1; i++)
            {
                string stLine = "";
                for (int j = 0; j < DatGrdV.Rows[i].Cells.Count; j++)
                    stLine = stLine.ToString() + 
                    Convert.ToString(DatGrdV.Rows[i].Cells[j].Value) + "\t";
                dataExport += stLine + "\r\n";
            }
            Encoding utf16 = Encoding.GetEncoding(??);
            byte[] output = utf16.GetBytes(dataExport);
            FileStream FleSys = new FileStream(filename, FileMode.Create);
            BinaryWriter BinryWrtr = new BinaryWriter(FleSys);
            BinryWrtr.Write(output, 0, output.Length);
            BinryWrtr.Flush();
            BinryWrtr.Close();
            FleSys.Close();
        }
private void SaveExportedData(DataGridView DatGrdV,字符串文件名)
{
字符串dataExport=“”;
字符串fColumnHeader=“”;
对于(int j=0;j
AFAIK Excel仅理解使用US-ASCII和UTF8编码的制表符分隔和CSV文件。尝试替换此:

Encoding utf16=Encoding.GetEncoding(864);
字节[]输出=utf16.GetBytes(数据导出);
与:

Encoding utf8=新的utf8编码(true)//包括前导码/字节顺序标记
字节[]输出=utf8.GetBytes(数据导出);
==完整示例==

下面的C#代码编写了一个带有阿拉伯语字符的.txt文件,当使用file>Open读取文件时,Excel会正确地呈现。正如我在评论中指出的,Excel的拖放处理程序已损坏,不支持文件编码

使用System.IO;
使用系统文本;
命名空间堆栈溢出
{
公共课程
{
常量字符串选项卡=“\t”;
公共静态字符串getAbseparatedValues()
{
var builder=新的StringBuilder();
AppendFormat(“{0}{1}{2}\r\n”,“英语”,制表符,“阿拉伯语”);
附录格式(“{0}{1}{2}\r\n”,“al-nahw al-wafy”,选项卡,“الوالوافي”);
返回builder.ToString();
}
公共静态void writeOutF8(字符串文件名、字符串数据)
{
Encoding utf8=新的UTF8Encoding(true);//包括前导码/字节顺序标记
byte[]输出=utf8.GetBytes(data.ToString());
使用(FileStream FleSys=newfilestream(filename,FileMode.Create))
使用(BinaryWriter BinryWrtr=new BinaryWriter(FleSys))
{
BinryWrtr.Write(输出,0,输出.长度);
}
}
公共静态void Main(字符串[]args)
{
var data=getAbseparatedValues();
写入输出F8(“Test.txt”,数据);
}
}
}

AFAIK Excel仅理解使用US-ASCII和UTF8编码的制表符分隔和CSV文件。尝试替换此:

Encoding utf16=Encoding.GetEncoding(864);
字节[]输出=utf16.GetBytes(数据导出);
与:

Encoding utf8=新的utf8编码(true)//包括前导码/字节顺序标记
字节[]输出=utf8.GetBytes(数据导出);
==完整示例==

下面的C#代码编写了一个带有阿拉伯语字符的.txt文件,当使用file>Open读取文件时,Excel会正确地呈现。正如我在评论中指出的,Excel的拖放处理程序已损坏,不支持文件编码

使用System.IO;
使用系统文本;
命名空间堆栈溢出
{
公共课程
{
常量字符串选项卡=“\t”;
公共静态字符串getAbseparatedValues()
{
var builder=新的StringBuilder();
AppendFormat(“{0}{1}{2}\r\n”,“英语”,制表符,“阿拉伯语”);
附录格式(“{0}{1}{2}\r\n”,“al-nahw al-wafy”,选项卡,“الوالوافي”);
返回builder.ToString();
}
公共静态void writeOutF8(字符串文件名、字符串数据)
{
Encoding utf8=新的UTF8Encoding(true);//包括前导码/字节顺序标记
byte[]输出=utf8.GetBytes(data.ToString());
使用(FileStream FleSys=newfilestream(filename,FileMode.Create))
使用(BinaryWriter BinryWrtr=new BinaryWriter(FleSys))
{
BinryWrtr.Write(输出,0,输出.长度);
}
}
公共静态void Main(字符串[]args)
{
var data=getAbseparatedValues();
写入输出F8(“Test.txt”,数据);
}
}
}

如果我理解正确,您正在创建包含阿拉伯字符的制表符分隔文本文件?我不确定使用代码页864是否正确,例如,请参见-当您只编写阿拉伯语文本时会发生什么?为什么不将其作为xlsx文件编写?我正在使用xlsx编写file@DevOsamaFY不,你不是。您正在编写以制表符分隔的文件格式。这与.xlsx文件不同,后者实际上是zip存档容器中的XML文件包(以及其他文件)。请告诉我如何解决此问题。如果我理解正确,您正在创建一个包含Ara的以制表符分隔的文本文件