C#利用npoi在已有多个Sheet的Excel中的其中一个Sheet插入或保存数据
using(MemoryStreamms=DataGridViewToExcel(myDgv,Path.GetExtension(strFileName),strShee...
using (MemoryStream ms = DataGridViewToExcel(myDgv, Path.GetExtension(strFileName), strSheetName, strHeaderText, titleNames))
{
//此处有重大问题
using (FileStream fs = new FileStream(strFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
byte[] data = ms.ToArray();
fs.Write(data, 0, data.Length);
fs.Flush();
}
}
顺带一提,最好兼容2007....主要问题有两个,第一我的Excel有几个表,我往其中一个表插入数据的时候就会只保存这个表并覆盖了整个Excel结果就只有一个表,第二....2007各种不会 展开
{
//此处有重大问题
using (FileStream fs = new FileStream(strFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
byte[] data = ms.ToArray();
fs.Write(data, 0, data.Length);
fs.Flush();
}
}
顺带一提,最好兼容2007....主要问题有两个,第一我的Excel有几个表,我往其中一个表插入数据的时候就会只保存这个表并覆盖了整个Excel结果就只有一个表,第二....2007各种不会 展开
1个回答
展开全部
string fileName = @"f:\2015光盘内容一览.xls";
HSSFWorkbook workbook;
using (FileStream stream = File.OpenRead(fileName))
workbook = new HSSFWorkbook(stream);
ISheet sheet = workbook.GetSheet("菜鸟"); //获取名称是“菜鸟”的表。
IRow row = sheet.CreateRow(0); //在第一行位置创建一行。
row.CreateCell(0).SetCellValue("测试"); //在第一列位置创建一列,并赋值“测试”。
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
workbook.Write(fs);
以上示例,读取xls文件,然后在“菜鸟”表第一行第一列填写文本"测试"并保存更新。
更多追问追答
追问
保存是能保存.问题是保存完了我三个sheet只剩下一个
追答
上面代码测试过可以的。测试文件是2003版的,里面包含4个sheet,更新后仍然是4个sheet
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询