Excel管理控件Aspose.Cells开发者指南(三):保存Excel文件的不同方法

翻译|使用教程|编辑:李显亮|2019-08-27 11:03:50.697|阅读 51 次

概述:Aspose.Cells提供了Workbook表示Microsoft Excel文件的内容,并提供了使用Excel文件所需的属性和方法。本Workbook类提供了Save用于保存Excel文件的方法。该Save方法有许多重载,用于以不同方式保存文件。

相关链接:

Aspose.Cells for .NET是Excel电子表格编程API,可加快电子表格管理和处理任务,支持构建具有生成,修改,转换,呈现和打印电子表格功能的跨平台应用程序。

【下载体验Aspose.Cells for .NET最新版】

在接下来的系列教程中,将为开发者带来Aspose.Cells for .NET的一系列使用教程,例如关于加载保存转换、字体、渲染、绘图、智能标记等等。

第一章:加载,保存,转换和管理

▲第三节:保存文件的不同方法

Aspose.Cells提供了Workbook表示Microsoft Excel文件的内容,并提供了使用Excel文件所需的属性和方法。本Workbook类提供了Save用于保存Excel文件的方法。该Save方法有许多重载,用于以不同方式保存文件。

将文件保存到某个位置


要将文件保存到存储位置,请SaveFormat在调用Workbook对象的Save方法时指定文件名(包含存储路径)和所需的文件格式(从枚举中)。

// 文档目录的路径。
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

string filePath = dataDir + "Book1.xls";

//加载源工作簿
Workbook workbook = new Workbook(filePath);

//以Excel 97©2003格式保存
workbook.Save(dataDir + ".output.xls");
// OR
workbook.Save(dataDir + ".output..xls", new XlsSaveOptions(SaveFormat.Excel97To2003));

//以Excel2007 xlsx格式保存
workbook.Save(dataDir + ".output.xlsx", SaveFormat.Xlsx);

//以Excel2007 xlsb格式保存
workbook.Save(dataDir + ".output.xlsb", SaveFormat.Xlsb);

//以ODS格式保存
workbook.Save(dataDir + ".output.ods", SaveFormat.ODS);

//以Pdf格式保存
workbook.Save(dataDir + ".output.pdf", SaveFormat.Pdf);

//以Html格式保存
workbook.Save(dataDir + ".output.html", SaveFormat.Html);

//以SpreadsheetML格式保存
workbook.Save(dataDir + ".output.xml", SaveFormat.SpreadsheetML);


将工作簿保存为文本或CSV格式


对于文本格式(例如TXT,TabDelim,CSV等),默认情况下,Microsoft Excel和Aspose.Cells仅保存活动工作表的内容。以下代码示例说明如何将整个工作簿保存为文本格式。使用任意数量的工作表加载源工作簿,该工作簿可以是任何Microsoft Excel或OpenOffice电子表格文件(因此XLS,XLSX,XLSM,XLSB,ODS等)。

执行代码时,它会将工作簿中所有工作表的数据转换为TXT格式。可以修改相同的示例以将文件保存为CSV。默认情况下,TxtSaveOptions.Separator是逗号,因此如果保存为CSV格式,请不要指定分隔符。

//文档目录的路径。
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

//加载源工作簿
Workbook workbook = new Workbook(dataDir + "book1.xls");

// 0字节数组
byte[] workbookData = new byte[0];

//文本保存选项。您可以使用任何类型的分隔符
TxtSaveOptions opts = new TxtSaveOptions();
opts.Separator = '\t';

//在工作簿数据数组中以文本格式复制每个工作表数据
for (int idx = 0; idx < workbook.Worksheets.Count; idx++)
{
    // 将活动工作表保存为文本格式
    MemoryStream ms = new MemoryStream();
    workbook.Worksheets.ActiveSheetIndex = idx;
    workbook.Save(ms, opts);

    //将工作表数据保存到工作表数据数组中
    ms.Position = 0;
    byte[] sheetData = ms.ToArray();

    //将此工作表数据合并到工作簿数据数组中
    byte[] combinedArray = new byte[workbookData.Length + sheetData.Length];
    Array.Copy(workbookData, 0, combinedArray, 0, workbookData.Length);
    Array.Copy(sheetData, 0, combinedArray, workbookData.Length, sheetData.Length);

    workbookData = combinedArray;
}

// 将整个工作簿数据保存到文件中
File.WriteAllBytes(dataDir + "out.txt", workbookData);


使用自定义分隔符保存文本文件


文本文件包含没有格式的电子表格数据。该文件是一种纯文本文件,可以在其数据之间包含一些自定义分隔符。

  //文档目录的路径。
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
string filePath = dataDir + "Book1.xlsx";

//创建一个Workbook对象并从其路径中打开该文件
Workbook wb = new Workbook(filePath);

//实例化文本文件的保存选项
TxtSaveOptions options = new TxtSaveOptions();

//指定分隔符
options.Separator = Convert.ToChar(";");

//使用选项保存文件
wb.Save(dataDir + "output.csv", options);


将文件保存到流


要将文件保存到流,请创建一个MemoryStream或FileStream对象,并通过调用该Workbook对象的Save方法将该文件保存到该流对象。SaveFormat调用Save方法时使用枚举指定所需的文件格式。

  //文档目录的路径。
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
string filePath = dataDir + "Book1.xlsx";

//加载源工作簿
Workbook workbook = new Workbook(filePath);
FileStream stream = new FileStream(dataDir + "output.xlsx", FileMode.CreateNew);
workbook.Save(stream, new XlsSaveOptions(SaveFormat.Xlsx));
stream.Close();

*想要购买Aspose.Cells for .NET正版授权的朋友可以联系在线客服了解详情哦~

欢迎加入ASPOSE技术交流QQ群,各类资源及时分享,技术问题交流讨论!(扫描下方二维码加入群聊)

1560231367164.png



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
Aspose.Cells

专业的电子表格控件,无需MS Excel也可满足一切Excel表格功能。

在线客服 在线QQ 电话咨询
400-700-1020
反馈
在线客服系统
live chat