英文:
How to Convert Yogesh.ExcelXmlWorkBook To byte Array?
问题
我有一个将 SQL 数据读取器转换为 Yogesh.ExcelXmlWorkBook 并将其保存到指定文件夹的方法,但我想直接将其存储到具有二进制格式的数据库中。请问如何将它转换为字节数组并直接保存到数据库?非常感谢。
英文:
Hello I Have A Method That Converts Sql Data Reader To Yogesh.ExcelXmlWorkBook And Save It Into An Specified Folder,But I Want To Store It Directly To Database With Binary Format,Could You Please Help Me How Can I Convert It to Byte Array And Save It Directly Into Database? Thanks A Lot.
public static string ExportToXML(int reportCode, SqlDataReader sqlReader, bool hasHeader)
{
string randomName = "";
try
{
if (reportDefaultPath == "")
{
// reportDefaultPath = HttpContext.Current.Server.MapPath("~/Files/ReportResult/{0}");
reportDefaultPath = System.Configuration.ConfigurationSettings.AppSettings["PicPath"].ToString() + "\\ReportResult\\{0}";
}
ExcelXmlWorkbook book = new ExcelXmlWorkbook();
book.Properties.Author = "Raahabr";
Yogesh.ExcelXml.Worksheet sheet = book[0];
sheet.Name = "";
sheet.FreezeTopRows = 4;
// sheet.Border.LineStyle = Yogesh.ExcelXml.Borderline.Continuous;
// sheet.Border.Sides = BorderSides.Bottom;
int startCol = 3;
int currentRow = 3;
int colCount = sqlReader.FieldCount;
if (hasHeader)
{
ReportBOL rbol = new ReportBOL();
Dictionary<string, string> cNames = rbol.getColumnNames(reportCode);
for (int i = 0; i < colCount; i++)
{
string head = sqlReader.GetName(i);
string value = (cNames.ContainsKey(head)) ? cNames[head] : head;
if (value.ToString() == "")
value = head;
sheet[currentRow + i, currentRow].Value = value;
sheet[currentRow + i, currentRow].Border.LineStyle = Borderline.Continuous;
sheet[currentRow + i, currentRow].Border.Sides = BorderSides.All;
}
}
currentRow++;
if (sqlReader.HasRows)
{
while (sqlReader.Read())
{
for (int i = 0; i < colCount; i++)
{
sheet[startCol + i, currentRow].Value = sqlReader[i].ToString();
sheet[startCol + i, currentRow].Border.LineStyle = Borderline.Continuous;
sheet[startCol + i, currentRow].Border.Sides = BorderSides.All;
}
currentRow++;
}
}
randomName = getRandomName();
book.Export(string.Format(reportDefaultPath, randomName));
var tools = new Tools();
book.DeleteSheet(0);
}
catch (Exception ex)
{
// System.IO.File.WriteAllText(HttpContext.Current.Server.MapPath("~/err.txt"), randomName + ";" + reportDefaultPath + "\r\n" + ex.Message + "\r" + ex.StackTrace);
}
finally
{
sqlReader.Close();
sqlReader.Dispose();
}
return randomName;
}```
</details>
# 答案1
**得分**: 0
将您的输出发送到一个流:
https://documentation.help/Yogesh.ExcelXml/6cfd5317-629d-b05e-cffe-6d4cadbb191b.htm(搜索“导出”)
https://documentation.help/Yogesh.ExcelXml/6f5d5ce5-edfb-9517-1866-6066cad5d8b9.htm(流导出文档)
将流转换为字节数组:
https://stackoverflow.com/questions/221925/creating-a-byte-array-from-a-stream
<details>
<summary>英文:</summary>
Send your output to a stream:
https://documentation.help/Yogesh.ExcelXml/6cfd5317-629d-b05e-cffe-6d4cadbb191b.htm (search "export")
https://documentation.help/Yogesh.ExcelXml/6f5d5ce5-edfb-9517-1866-6066cad5d8b9.htm (export to stream documentation)
Convert the stream to a byte array:
https://stackoverflow.com/questions/221925/creating-a-byte-array-from-a-stream
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论