使用NPOI进行密码保护的EXCEL
我有一个.NET C#应用程序,其中IM在按钮上单击一个Excel文件. 代码IM使用的是 using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.SS.UserModel; 然后是一些代码. HSSFWorkbook book = new HSSFWorkbook(); var sheet = book.CreateSheet("StatusReport"); 一些用于格式化Excel的代码,然后一些用于下载Excel的代码. HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Charset = "utf-16"; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncod
2 2023-05-21
编程技术问答社区
'OutOfMemoryException'读取20mb XLSX文件
我正在使用 npoi 来处理Excel文件.这是我正在阅读文件的方式: using (FileStream stream = File.OpenRead(excelFilePath)) { IWorkbook wb = WorkbookFactory.Create(stream); ... } 但是,对于大于少数兆字节的任何XLSX文件,它会导致内存使用量大约为1GB并最终抛出一个OOM例外. 做一些研究,我发现了 ,从文件中加载工作簿而不是流导致POI减少内存消耗.我想到的最接近的c#等效于我想到的文件示例: : OPCPackage pkg = OPCPackage.Open(new FileInfo(excelFilePath)); XSSFWorkbook wb = new XSSFWorkbook(pkg); ,但似乎使用了相同的基础实现,因为内存使用情况仍然相同,并导致OutofMemory Exceptions. NPOI是
18 2023-05-15
编程技术问答社区
用NPOI将图像添加到Word docx文件中
我开始使用NPOI来创建Word文档,并且我正在尝试将简单的图像添加到文档中,但它没有显示出来. (虽然我可以得到可以很好的文字). 这是我的代码: var wDoc = new XWPFDocument(); var bytes = File.ReadAllBytes(Settings.Configuration.WebsiteRootPath + "images/logo-large.png"); wDoc.AddPictureData(bytes, (int)PictureType.JPEG); 我也尝试过: var wDoc = new XWPFDocument(); using (Stream s = File.OpenRead(Settings.Configuration.WebsiteRootPath + "images/logo-large.png")) { wDoc.CreatePar
16 2023-04-04
编程技术问答社区
WCF的MemoryStream返回类型是否可以写入Http Response对象中,作为Excel文件下载?
我构建了一个解析应用程序,该应用程序读取XML文件,并使用 Microsoft JScript运行时错误: sys.webforms.pagerequestmanagerparsererrorexception: 从服务器收到的消息 无法解析. 我的问题是:当流从WCF服务传递给我的客户时,该流如何将其传递给我的客户?该流(理论上)是我最初写给响应的NPOI完全相同的流.我需要在客户上做任何特殊处理以完成这项工作吗? 这是我的客户端代码:(异常在with.end() 上抛出 string filename = "test.xls"; ms = client.GetExportedFile(); byte[] b = ms.ToArray(); ms.Flush(); ms.Close(); Response.Clear(); Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader(
6 2023-03-25
编程技术问答社区
NPOI设置不同的单元格式
我有问题设置每个单元格中的不同格式,我想将数字格式设置为千分隔符和3个小数的千分隔符,当数字不整数时,这是我的代码,我认为问题看起来像每个单元格格式.通过最后一个for for Cycle 设置 所以输出应该像这样 12345-> 12 345; 425-> 425; 41,2-> 41,2; 4578,25-> 4 578,25 short doubleFormat = hssfOutputWorkBook.CreateDataFormat().GetFormat("#,##0.###"); short intFormat = hssfOutputWorkBook.CreateDataFormat().GetFormat("#,##0"); for (i = 0; i
20 2023-03-08
编程技术问答社区
NPOI日期格式单元格
我正在使用npoi在Sheep1中创建固定的工作表模板,并且需要以日期格式的Sheep2中的数据.我从数据库生成数据来以在Sheet2中设置数据. 这是我的代码: private DataTable getWeek() { strConn = WebConfigurationManager.ConnectionStrings["myConn"].ConnectionString; conn = new OdbcConnection(strConn); conn.Open(); sql = "SELECT week, sunday, saturday FROM tb_weekreferences"; da = new OdbcDataAdapter(sql, conn); dt = new DataTable(); da.Fill(dt); conn.Close(); return dt; } ,然后导出到
22 2023-03-08
编程技术问答社区
为ICellStyle的FillForegroundColor定制颜色,比提供的命名颜色要好。
我们刚开始使用NPOI组件. 我们有问题来设置iCellStyle属性的填充地面彩色. ICellStyle HeaderCellStyle = xssfworkbook.CreateCellStyle(); HeaderCellStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.RED.index; 填充前景颜色的期望短. 我们如何设置不同的颜色,而不是在HSSFColor中使用颜色. 我们需要设置为"RGB192:0:0",以及如何为icellStyle属性填充foreforegroundColor colud有人帮我们一个例子吗? 解决方案 我找到了我的自我.请参阅下面的代码 byte[] rgb = new byte[3] { 192, 0, 0 }; XSSFCellStyle HeaderCellStyle1 = (XSSFCellStyle)xssfworkbook.
10 2023-02-23
编程技术问答社区
C# NPOI 设置单元格样式为文本/字符串1-19被格式化为日期/禁用任何格式化。
我正在创建一个excel,当我编写一些值示例1-19时,当我打开excel文档时,我会看到1-19,但是如果我单击它,那么Excel会尝试将其格式化为日期 是否有一种方法可以强迫纸张不使用任何公式或格式? 我已经检查了,并且数据format是字符串. private void Test1(ref ISheet worksheet, string[] array, IWorkbook workbook, int iRow, XSSFFont font2) { var format = HSSFDataFormat.GetBuiltinFormats(); ICellStyle _TextCellStyle = workbook.CreateCellStyle(); _TextCellStyle.DataFormat = workbook.CreateDataFormat().GetFor
66 2023-02-23
编程技术问答社区
为什么NPOI创建的单元格下拉列表总是由逗号分割?
我使用npoi(Java -apache POI的.NET版本)创建了Excel表.我需要添加一些下拉列表,但是我发现不管我传递了哪个列表,它总是按逗号拆分项目值,从而制作新行.任何机会,您知道如何避免这种情况吗? 这是我的代码 CellRangeAddressList cellRange = new CellRangeAddressList(cell.RowIndex, cell.RowIndex, cell.ColumnIndex, cell.ColumnIndex); DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(new string[] {"$400","$1,900"}); HSSFDataValidation validation = new HSSFDataValidation(cel
4 2023-02-21
编程技术问答社区
用NPOI将单元格格式化为百分比 C#
我正在尝试使用NPOI将特定的XLS单元格式化为"百分比"格式. 我能够使用 将其转换为文本 (dataRow.GetCell(17) ?? dataRow.CreateCell(17)).CellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("Text"); 但是,如果我尝试以百分比进行操作,则无效.这是我尝试的代码 (dataRow.GetCell(17) ?? dataRow.CreateCell(17)).CellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("Percentage"); 它将仅将该单元格设置为通用.我将如何将其设置为百分比? 请记住,我希望该值例如0.05在单元格(不是5%),而是以百分比为百分比. 解决方案 我找到了答案.我必须使用: (dataRow.GetCell(17) ?? dataRow.CreateCell
12 2023-02-21
编程技术问答社区
当使用NPOI时,我应该在C#中向Visual Studio添加哪些文件?
我一直在尝试从NPOI导入所有内容,但它不会让我使用库,所以我想我正在导入错误的事情,所以如果有人知道那会很棒. 解决方案 Brian对您的问题发表评论.包括与NPOI相关的所有库的最佳方法是Nuget Package Manager.成功安装后,所有所需库将出现在您当前项目的参考部分中. 然后将NPOI包括在您的文件中,例如 using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel
14 2023-02-21
编程技术问答社区
npoi SetCellFormula在VBA中的自定义公式
i有一个应用程序,该应用程序填充了一个excel模板.template是.xlsm .in template我创建了vba函数,当我尝试将单元格公式设置为此函数时,称为sumbyColor,我得到此错误: {"Name 'SumByColor' is completely unknown in the current workbook"} 我设置了这样的公式: sheet.GetRow(rowIndex).GetCell(startPos + 2).SetCellFormula(string.Format("SumByColor($AQ$7,F{0}:AI{0})",rowIndex+1)); 解决方案 您是否尝试过在设置单元格公式之前将单元格类型设置为公式.对于ex: XSSFRow row = (XSSFRow)sheet.GetRow(i); ICell cell = row.CreateCell(1); cell.SetCellType(CellT
16 2023-02-21
编程技术问答社区
NPOI导出excel的所有列,但最后一列成为空白
我正在投资NPOI Excel出口的AutoSizeColumn().从此A>,我知道,在将数据表导出到Excel时,必须在调用AutoSizeColumn()之前写入一列中的所有数据.示例:(从此开始,因此答案: HSSFWorkbook spreadsheet = new HSSFWorkbook(); DataSet results = GetSalesDataFromDatabase(); //here, we must insert at least one sheet to the workbook. otherwise, Excel will say 'data lost in file' HSSFSheet sheet1 = spreadsheet.CreateSheet("Sheet1"); foreach (DataColumn column in results.Tables[0].Columns) { int rowIndex = 0;
14 2023-02-21
编程技术问答社区
无法访问一个封闭的流(NPOI库)。
我正在使用以下代码使用NPOI库创建Excel文件.我正在获得"无法访问封闭流"错误.我经历了一些线程,并试图实施这些建议,但它不起作用. XSSFWorkbook wb = null; using (FileStream file = new FileStream("D:\\Test_Output.xlsx", FileMode.Open, FileAccess.Read)) { wb = new XSSFWorkbook(file); } MemoryStream mstream = new MemoryStream(); wb.Write(mstream); FileStream xfile = new FileStream(Path.Combine(taskpath, "Test_Output.xlsx"), Fil
16 2023-02-20
编程技术问答社区
NPOI中的格式化错误
我正在开发一个会计软件,该软件还将以Excel格式(.xls)创建报告. 我在几乎每个需要Excel报告的项目中都使用了NPOI,没有任何重大问题. 但是我现在正在面临问题,似乎找不到任何解决方案浏览互联网. 您可以看到,报告中的中途,货币列自动更改格式,而不是正确格式化货币,边框和该列中的所有内容. 我已经工作了几次,没有成功. 这是我用来创建样式(C#)的代码: var baseStyle = workBook.CreateCellStyle(); baseStyle.VerticalAlignment = VerticalAlignment.Top; baseStyle.FillForegroundColor = IndexedColors.White.Index; baseStyle.FillPattern = FillPattern.SolidForeground; baseStyl
10 2023-02-17
编程技术问答社区
NPOI不改变单元格的字体颜色
我试图有条件地更改单元格的字体颜色.这是我的最后一次尝试: IWorkbook wb = null; using (FileStream _fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) { wb = WorkbookFactory.Create(_fileStream); _fileStream.Close(); } ISheet sheet = wb.GetSheet(sheetName); IFont font = wb.CreateFont(); ... ... // within a loop ICell cell = sheet.GetRow(r).GetCell(col); if (integrity
4 2023-02-17
编程技术问答社区
如何重新计算一个单元格的公式?
我的代码正在设置很多单元格值.最后,在生成Excel文件之前,需要评估每个单元格中的公式.对于大多数床单,事情进展顺利. 但是,有一个正在抛出例外的单元格.该细胞正在计算其追随者的一系列细胞的平均值和其他片段中的参考单元.我猜想,当第一个单元格尝试计算平均值时,尚未评估后的单元格. . 这是该单元格上的公式 =IFERROR(AVERAGEIF(D2:AU2,"-"),"-") 我怀疑这是因为细胞在其他纸中范围的参考单元格.例如,D2具有以下公式=Common!E2. 所以我决定要做的是: 包装在try-catch块中执行公式的呼叫. 如果执行单元格会引发异常,则保存该单元格的坐标. 然后我执行了扔异常的单元格 我注意到相同的单元格在不断投掷错误.为了能够退出循环,我要计算3次迭代. 生成Excel的生成时,细胞具有值-.但是,当我选择单元格然后按enter时,它执行并显示正确的值. 我推迟执行该单元格的原因是,在第一次迭代后,已
50 2023-02-17
编程技术问答社区
C#. xlsx日期单元格导入DataTable by NPOI 2.0
我尝试使用NPOI 2.0库将.xlsx文件转换为数据表格式.没关系,但是我在转换为字符串日期单元格时有问题.当我尝试使用诸如row.getCell(j).toString()之类的构造时,它是"无法从文本单元格获得数字值"的例外.我尝试使用DateCellValue属性,但也抛出了此例外.使用其他单元格式,它可以很好地工作. 功能,我使用它是: private DataTable xlsxToDT(string fileName) { DataTable table = new DataTable(); XSSFWorkbook workbook = new XSSFWorkbook(new FileStream(fileName, FileMode.Open, FileAccess.Read)); ISheet sheet = workbook.GetSheetAt(0); IRow headerRow =
34 2023-02-17
编程技术问答社区
使用NPOI向Excel文件插入图片
我正在使用C#在Visual Studio 2010中编写一个程序,并且我正在使用NPOI库. 我正在尝试将图像插入到Excel文件中.我尝试了两种不同的方法,它们都不起作用. //Method 1 HSSFPatriarch patriarch = newSheet.CreateDrawingPatriarch() as HSSFPatriarch; HSSFClientAnchor anchor; var memoryStream = new MemoryStream(); System.Drawing.Image image = System.Drawing.Image.FromFile("image.jpeg"); image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Gif); anchor = new HSSFClientAnchor(0, 0, 255, 255, 0, 0, 0, 0); an
32 2023-02-17
编程技术问答社区
NPOI对所有单元格的格式都是一样的
请看一下以下代码段.我只需打开excel文件myfile.xlsx,然后从类型List的对象添加行(其中我的Account对象仅具有Date,Account和Amount属性),然后将文件存储在名称myoutputfile.xlsx.我希望我编写日期以具有日期格式的单元格,以及具有数字格式的单元格.但是,如果我尝试下面的代码,则所有单元格都使用#.00格式(也是日期)格式化.我已经尝试了一切,有人可以告诉我发生了什么事吗?我正在使用npoi. XSSFWorkbook wb; var fileName = "C:/tmp/myfile.xlsx"; var outputFileName = "C:/tmp/myoutputfile.xlsx"; using (var file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite)) {
18 2023-02-16
编程技术问答社区