Tag: npoi

试图读取Excel(xls)文件,而不必先下载它

我试图find一种方法来检查通过networking(使用HTTP URL)的Excel(XLS)文件的内容,如果内容(来自特定的单元格,和工作表名称的数据)罚款,将其保存在本地。 我现在所做的是我下载文件,用Iterop检查,如果内容不匹配,我删除/删除它。 我正在考虑用BinaryReader获取文件内容,而不是把它转换成FileStream,但是没有find办法做到这一点。 目前我还在检查NPOI图书馆,但直到现在还没有find办法来实现这一点…

将XLS转换为XLSX的NPOI引发空引用

我试图使用NPOI将文件从XLS转换为XLSX。 由于我不知道明确的转换,我写了这个第一个实现通过行和单元格,并从一个复制到另一个: public string ConvertToXlsx(string xlsPath) { var oldWorkbook = new HSSFWorkbook(new FileStream(xlsPath, FileMode.Open)); var oldWorkSheet = oldWorkbook.GetSheetAt(0); var newExcelPath = xlsPath.Replace("xls", "xlsx"); using (var fileStream = new FileStream(newExcelPath, FileMode.Create)) { var newWorkBook = new XSSFWorkbook(); var newWorkSheet = new XSSFSheet(); newWorkBook.Add(newWorkSheet); foreach (HSSFRow oldRow in oldWorkSheet) { var newRow = newWorkSheet.CreateRow(oldRow.RowNum); for (int ii […]

NPOI写入腐败文件 – 裸和号

使用NPOI 2.1.3.1,我试图读取现有的Excel(* .xlsx)工作簿,对其进行修改,然后将其写回原始文件。 在阅读了各种线程(包括这个 )之后,我仍然无法find解决问题的方法。 当我将文件写入磁盘,然后尝试在Excel中再次打开它时,出现以下错误: 我们在(文件名)中find了一些内容的问题,您是否希望我们尽可能地恢复?如果您信任此工作簿的源,请单击“是”。 点击“是”修复Excel文件中的各种问题,之后我看到下面的修复报告: replace部分:XML错误的/xl/worksheets/sheet3.xml部分。 非法的名字。 第3行,第3891168列。 replace部分:/xl/worksheets/sheet19.xml部分,出现XML错误。 非法的名字。 第1行,第699903列。 删除logging:来自/xl/calcChain.xml部分的公式(计算属性) 我解压缩了* .xlsx文件,发现提到的表单,并发现它所指的字符是一个没有写成“&”的纯和符号(&)。 在XML中。 原来用“&”,但是NPOI写的文件没有。 我不知道公式(第三个问题)是什么问题。 这里是一个完整的程序,每次使用我正在使用的工作簿再现这个问题,删除文件名: using System.IO; using NPOI.XSSF.UserModel; namespace NpoiTest { public sealed class NpoiTest { public static void Main(string[] args) { XSSFWorkbook workbook; using (FileStream file = new FileStream(@"C:\Path\To\File.xlsx", FileMode.Open, FileAccess.Read)) { workbook = new XSSFWorkbook(file); } […]

使用NPOIdynamic创buildExcel模板

我有一个Excel .xlsx模板文件,我需要dynamic适应我的需要。 它现在只包含标题行,其中两列是“占位符”列,我需要插入新列以适合我的需要。 标题行可能如下所示: FirstName | LastName | City | #Modules# | Remarks | #Experts# | Country | Phone 带有#的两列是“占位符”值 – 取决于从数据库中获得的一些数据,我需要用多列来replace那些单列 – 例如,用三列M1 , M2和M3replace#Modules#并用Expert 1和Expert 2取代#Experts#所以最后,我的Excel应该是这样的: FirstName | LastName | City | M1 | M2 | M3 | Remarks | Expert 1 | Expert 2 | Country | Phone 我试图用NPOI v2.2来实现这一目标,但迄今为止还没有取得成功。 方法1:我尝试使用IRow.CreateCell调用,但似乎是覆盖现有的列,所以当我find#Modules#并将其replace为我的实际模块数据,我最终有 FirstName […]

NPOI – 将excel文件的一部分embedded到电子邮件中C#

我想发送一个电子邮件使用SMTP与embedded式Excel数据。 我使用数据表来引入外部数据,并使用数据表的一部分创build一个excel文件。 而我只想embeddedexcel文件的4行。 如何将sheet1更改为html以embedded到电子邮件中? private void Email() { //get the data from database DataTable data = GetData(); IWorkbook workbook; workbook = new HSSFWorkbook(); ISheet sheet1 = workbook.CreateSheet("Sheet 1"); …. }

使用NPOI合并标题生成Excel?

我试图导出excel表使用NPOI像波纹pipe,但我无法改变背景颜色和设置第二个单元格的值。 贝娄是我的代码。 var workbook = new XSSFWorkbook(); var sheet = workbook.CreateSheet("Commission"); var row = sheet.CreateRow(0); var bStylehead = workbook.CreateCellStyle(); bStylehead.BorderBottom = BorderStyle.Thin; bStylehead.BorderLeft = BorderStyle.Thin; bStylehead.BorderRight = BorderStyle.Thin; bStylehead.BorderTop = BorderStyle.Thin; bStylehead.Alignment = HorizontalAlignment.Center; bStylehead.VerticalAlignment = VerticalAlignment.Center; bStylehead.FillBackgroundColor = HSSFColor.Green.Index; row.CreateCell(0); row.CreateCell(1); var r2 = sheet.CreateRow(1); r2.CreateCell(0, CellType.String).SetCellValue("Name"); r2.CreateCell(1, CellType.String).SetCellValue("Address"); r2.CreateCell(2, CellType.String).SetCellValue("city"); r2.CreateCell(3, CellType.String).SetCellValue("state"); var […]

使用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); anchor.AnchorType = 2; //types are 0, 2, and 3. 0 resizes within the cell, 2 doesn't int index […]

使用NPOI在Excel中设置整数值

我有一个Excel行,我需要在第一列使用NPOI编写5 ,第二列使用7.0 。 编写这些值非常简单,但是当我需要在同一行中写入时, 5被格式化为5.0 。 写5 ,我用: public static void SetCellValue(IRow row) { var cell = row.CreateCell(1); // column 1 int value = 5; cell.SetCellType(CellType.Numeric); cell.SetCellValue(value); // 5 is written } 要写7.0 ,我使用: public static void SetCellValue(IRow row) { var cell = row.CreateCell(2); // column 2 int value = 7; cell.SetCellType(CellType.Numeric); cell.SetCellValue(value); var dataFormat […]

使用NPOI,我如何返回一个单元格值,因为它已被格式化为Excel?

使用NPOI ,是否有格式化单元格值的可能性(特别是数值和date值),因为它已被格式化为Excel ? 如果不是什么将是实施它的最好方法? 我想到一个格式string从Excel格式转换为C#格式的转换器? 以下示例假定Excel格式string和C#格式string是相同的。 所以它适用于一些基本的格式字符,如:“#,## 0.00” using NPOI.SS.UserModel; ICell cell = workbook.GetSheet("table1").GetRow(0).GetCell(0); string value = null; if(cell.CellType == CellType.String) { value = cell.StringCellValue; } else if(cell.CellType == CellType.Numeric) { string formatString = cell.CellStyle.GetDataFormatString(); if(DateUtil.IsCellDateFormatted(cell)) { value = cell.DateCellValue.ToString(formatString); } else { value = cell.NumericCellValue.ToString(formatString); } } else […]

双击excel之后,只有格式才能在excel中应用于npoi的C#

我有一个要求 NPOI单元格格式为“MM / dd / yy”,当用户点击该特定单元格时,应显示如图所示的完整值。 当我尝试手动,它工作绝对好,但是当我通过代码申请。 这是行不通的。 我附上以下示例代码以供参考。 所以你可以指导我寻求可能的解决scheme。 我将非常感谢您的帮助和支持。 提前致谢。 string value = "02/17/2017 10:10:10"; DateTime datetime; SimpleDateFormat dateFormat = new SimpleDateFormat ("MM/dd/yy"); DateTime dt = Convert.ToDateTime(value); var dateString = dateFormat.Format(dt, CultureInfo.InvariantCulture); if (DateTime.TryParseExact(dateString.ToString(), "MM/dd/yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out datetime)) { cell.SetCellValue(datetime.Date); } else { cell.SetCellValue(value); } //For styling var dateTypecontentStyle = workbook.CreateCellStyle(); dateTypecontentStyle.DataFormat […]