1

ExcelファイルのダウンロードにEPPlus 3.0(codeplex最新ライブラリ)ライブラリを使用しています。すべてが正常に機能していますが"_x00D_"、データに文字列が表示されている列があります。私はグーグルで調査しましたが、誰もが改行文字だと言っています。すべてのシナリオを試しましたが、まだ機能しません。

私に助言してください。

  Using pck As New ExcelPackage()
                    'Create the worksheets
   Dim wsAll As ExcelWorksheet = pck.Workbook.Worksheets.Add("All")
   Dim wsManufacturing As ExcelWorksheet = pck.Workbook.Worksheets.Add("Manufacturing")
   Dim wsHealthcare As ExcelWorksheet = pck.Workbook.Worksheets.Add("Healthcare")
   Dim wsManagement As ExcelWorksheet = pck.Workbook.Worksheets.Add("Management")
   Dim wsSelling As ExcelWorksheet = pck.Workbook.Worksheets.Add("Selling")

   'Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
   wsAll.Cells("A1").LoadFromDataTable(dtAllDownload, True)
   If dtManufacturing.Rows.Count > 0 Then
     wsManufacturing.Cells("A1").LoadFromDataTable(dtManufacturing, True)
   End If
   If dtChinaHealthcare.Rows.Count > 0 Then
     wsHealthcare.Cells("A1").LoadFromDataTable(dtHealthcare, True)
   End If
   If dtChinaManagement.Rows.Count > 0 Then
       wsManagement.Cells("A1").LoadFromDataTable(dtManagement, True)
   End If
   If dtSelling.Rows.Count > 0 Then
      wsSelling.Cells("A1").LoadFromDataTable(dtSelling, True)
   End If

   Dim filename As String = "FullExtract_" & Now.Year.ToString & Now.Month.ToString & Now.Day.ToString & ".xlsx"
    Dim fileBytes As [Byte]() = pck.GetAsByteArray()
    HttpContext.Current.Response.Clear()
    HttpContext.Current.Response.ClearContent()
    HttpContext.Current.Response.ClearHeaders()
    HttpContext.Current.Response.Cookies.Clear()
    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.[Private])
    HttpContext.Current.Response.CacheControl = "private"
    HttpContext.Current.Response.Charset = System.Text.UTF8Encoding.UTF8.WebName
    HttpContext.Current.Response.ContentEncoding = System.Text.UTF8Encoding.UTF8
    HttpContext.Current.Response.AppendHeader("Content-Length", fileBytes.Length.ToString())
    HttpContext.Current.Response.AppendHeader("Pragma", "cache")
    HttpContext.Current.Response.AppendHeader("Expires", "60")
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment;  filename=" & filename)
    HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    HttpContext.Current.Response.BinaryWrite(fileBytes)
    HttpContext.Current.Response.[End]()
4

1 に答える 1

0

この文字列はDataTableからのものだと思いますが、次のメソッドに置き換えることができます。

public static void Replace_x00D_(DataTable data)
{
  List<DataColumn> stringColumns = new List<DataColumn>();
  foreach (DataColumn dc in data.Columns)
  {
    if (dc.DataType == typeof(string))
      stringColumns.Add(dc);
  }

  foreach (DataRow rw in data.Rows)
  {
    foreach (DataColumn dc in stringColumns)
      rw.Field<string>(dc).Replace("_x00D_", "");
  }
}
于 2012-05-29T21:37:47.200 に答える