You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForms应用中如何将REST API响应保存为Excel(.xlsx)文件

Excel文件下载乱码无法打开的问题解决

错误原因

  • 二进制内容被字符串转换破坏:Excel是二进制格式文件,你用response.Content获取内容时,RestSharp会将原始二进制字节转成UTF-8字符串,这个转换过程会丢失二进制信息,直接导致内容乱码。
  • GET请求添加了无效请求体:GET请求规范里不需要请求体,你添加的空text/plain请求体可能干扰接口正常返回二进制内容。
  • 用文本流写入二进制文件:StreamWriter是处理文本的工具,它会把字符串按编码转成字节写入,进一步破坏Excel的二进制结构,导致文件无法打开。

正确实现方法

修改下载方法(获取原始二进制字节)

public static byte[] DownloadFileBytes()
{
    try
    {
        var client = new RestClient("https://www.connect2nse.com/extranet-api/member/file/download/1.0?segment=CM&folderPath=/Reports&filename=07141_AR1_Dec22.xlsx");
        client.Timeout = -1;
        var request = new RestRequest(Method.GET);
        request.AddHeader("Authorization", "Bearer eyJhbGciOweSUzI1NiJ9.eyJtZW1iZXJDZCI6IjA3MTQxIiwic3ViIjoiMDcxNDEiLCJsb2dpbklkIjoiYm5yaG8xIiwiaXNzIjoiYm5yaG8xIiwiZXhwIjoxNjc0ODA0NDE0LCJpYXQiOjE2NzQ4MDA4MTQsImp0aSI6ImEwY2U3NjNkLWY1OWUtNDY2Yy1hMmMwLTUwNGQwZDgzOTQwYiJ9.UCnkkvTTi9fZjWWak5deXgxPEqMG16FQP4Cy_u1cR0hQb-xQ4LAhbfpMtFz1WXQ4fz7ZmRhkR1i9JXY4w32lzQ");
        request.AddHeader("Cookie", "HttpOnly");
        
        // 删除GET请求中多余的请求体参数
        // request.AddParameter("text/plain", "", ParameterType.RequestBody);
        
        IRestResponse response = client.Execute(request);
        // 返回接口返回的原始二进制字节
        return response.RawBytes;
    }
    catch (Exception)
    {
        throw;
    }
}

修改按钮点击事件(写入二进制文件)

private void btnDownload_Click(object sender, EventArgs e)
{
    byte[] fileBytes = DownloadFileBytes();
    if (fileBytes == null || fileBytes.Length == 0)
    {
        MessageBox.Show("文件下载失败");
        return;
    }
    
    string filePath = Path.Combine(Application.StartupPath, "07141_AR1_Dec22.xlsx");
    // 直接写入二进制字节,保留文件原始结构
    File.WriteAllBytes(filePath, fileBytes);
    MessageBox.Show("文件下载完成");
}

是否需要额外DLL

不需要额外DLL,你当前使用的RestSharp已经足够处理HTTP请求和二进制内容的获取,只需调整代码逻辑即可。

内容的提问来源于stack exchange,提问作者Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:56:05