我正在编写一个程序来处理一些 excel 文档,该程序是在 Visual Studio 2010 中用 C# 编写的,并且我正在使用 NPOI 库。
我注意到我无法CloneSheet()
用于xlsm文件,但我可以使用 xlsx 来做到这一点。
CloneSheet()
是我在这个过程中真正需要的一个功能,所以我真的想让它工作,而不是一个单元一个单元地复制所有内容。
我想将文件转换为 xlsx。我能够手动完成,但不能以编程方式完成。
这是我编写的尝试这样做的代码:
XSSFWorkbook workbook;
//read original xlsm file into workbook
using (FileStream file = new FileStream(@"OriginalFile\" + filename, FileMode.Open, FileAccess.Read))
{ workbook = new XSSFWorkbook(file); }
//change file extension to xlsx and save in a new location
filename = Path.ChangeExtension(filename, "xlsx");
if (!Directory.Exists("NewFile"))
Directory.CreateDirectory("NewFile");
FileStream stream = new FileStream(("NewFile\\New" + filename), FileMode.Create, System.IO.FileAccess.Write);
workbook.Write(stream);
stream.Close();
//read the newly created file from the new location
using (FileStream file = new FileStream(@"NewFile\\New" + filename, FileMode.Open, FileAccess.Read))
{ workbook = new XSSFWorkbook(file); }
上面的代码会创建新的 xlsx 文件,但是文件打不开,好像已经损坏了……
我一直在谷歌搜索,似乎无法找到解决方案,任何人都可以帮助或指出正确的方向吗?
- 编辑 - -
我使用在这里找到的 Open XML 尝试了一种不同的方法,但我遇到了同样的问题,即创建了文件但我无法打开文件。
但是,该文件似乎没有损坏。我正在读取文件的程序在读取数据时没有问题,当我尝试在 excel 中打开文件时,它显示“该文件是无宏文件,但包含启用宏的内容。 ”
好像我越来越近了,但我需要能够打开输出文件,否则没用....