我有一些Excel文件,每个文件只有一张工作表,当我尝试将这些工作表复制到新的Excel时遇到问题,我遇到了以下两个异常:
异常错误。
错误消息:流不支持阅读。
详细信息:
在System.IO.FileStream.Read(字节[]数组,Int32偏移量,Int32计数)
在ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.Fill()
在ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadLeByte()
在ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadLeInt()
在ICSharpCode.SharpZipLib.Zip.ZipInputStream.GetNextEntry()
在NPOI.OpenXml4Net.Util.ZipInputStreamZipEntrySource..ctor(ZipInputStream inp)
在NPOI.OpenXml4Net.OPC.ZipPackage..ctor(流文件流,Packageaccess访问权限)
在NPOI.OpenXml4Net.OPC.OPCPackage.Open(Stream in1)中
在NPOI.Util.PackageHelper.Open(Stream is1)
在NPOI.XSSF.UserModel.XSSFWorkbook..ctor(Stream is1)
在MetroSet_UI_Example.Form1.metroSetButton1_Click(对象发送方,EventArgs e)
第二个例外是:
System.NullReferenceException:“对象引用未设置为对象的实例。”
用于读取并生成新文件的按钮:
private void metroSetButton1_Click(object sender,EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
appuiListBox.Items.Clear();
appuiGridView.Rows.Clear();
try
{
String appuiName = "";
XSSFSheet sheet = null;
//XSSFWorkbook workbookMerged = new XSSFWorkbook(new FileStream("MergedAppuis.xlsx",FileMode.Append,Fileaccess.Write));
XSSFWorkbook workbookMerged = new XSSFWorkbook();
foreach (String appui in openFileDialog1.FileNames)
{
var fileExtension = Path.GetExtension(appui);
if(fileExtension == ".xlsx")
{
using (var fs = new FileStream(appui,FileMode.Open,Fileaccess.Read))
{
XSSFWorkbook wb = new XSSFWorkbook(fs);
sheet = (XSSFSheet)wb.GetSheetat(0);
//((XSSFSheet)wb.GetSheetat(0)).CopyTo(workbookMerged,sheet.GetRow(25).getcell(0).StringCellValue,true,true);
sheet.CopyTo(workbookMerged,"5454",true);
//MessageBox.Show(((XSSFSheet)wb.GetSheetat(0)).SheetName);
}
}
}
}
catch (Exception ex)
{
MessageBox.Show($"Exception error.\n\nError message: {ex.Message}\n\n" +
$"Details:\n\n{ex.StackTrace}");
}
}
}