根据如何在使用NPOI创建的Excel文档中将列设置为"自动调整大小"?我这样做了:
foreach (DataColumn column in dataTable.Columns)
{
int rowIndex = 0;
foreach (DataRow row in dataTable.Rows)
{
HSSFRow dataRow = sheet.CreateRow(rowIndex);
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
rowIndex++;
}
sheet.AutoSizeColumn(column.Ordinal);
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.怎么做对吗?
我有问题在每个单元格中设置不同的格式,我想将数字格式设置为千位分隔符和千位分隔符与3位小数,当数字不是整数时,这是我的代码,我认为问题看起来像每个单元格格式由最后fomat设置设置为循环
所以输出应该像这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 <= unorderedSheet.LastRowNum; i++)
{
NPOI.SS.UserModel.IRow newRow = orderedSheet.CreateRow(i);
NPOI.SS.UserModel.IRow oldRow = unorderedSheet.GetRow(i);
if (oldRow != null)
{
foreach (ICell oldCell in oldRow.Cells)
{
ICell newCell = newRow.CreateCell(mapping[n]);
switch (oldCell.CellType)
{
case CellType.NUMERIC:
newCell.SetCellType(CellType.NUMERIC);
newCell.SetCellValue(oldCell.NumericCellValue);
if (numberHasDecimals(oldCell.NumericCellValue))
{
newCell.CellStyle.DataFormat = doubleFormat;
}
else
{
newCell.CellStyle.DataFormat = intFormat;
}
break; …Run Code Online (Sandbox Code Playgroud) 我想使用npoi来操作.xlsx文件VS2012/2010.为此,我应该导入NPOI.XSSF.UserModel,但是当我添加npoi.dll并尝试导入它时,没有XSSF类型的NPOI使用部分.我的意思是没有" Using NPOI.XSSF"任何帮助?
我正在尝试使用NPOI将一些内容写入excel文件.但是使用自动调整大小列方法时会导致错误"参数无效".这仅适用于包含大量数据的工作表.下面是我用来完成这项工作的代码.
public void CloseDatabaseLogFile()
{
try
{
FileStream sw = File.Create(excelSheetPath);
oSheet.AutoSizeColumn(0);
oSheet.SetColumnWidth(1, 8400);
oSheet.AutoSizeColumn(2);
oSheet.AutoSizeColumn(3);
oSheet.AutoSizeColumn(4);
oSheet.AutoSizeColumn(5);
oSheet.AutoSizeColumn(6);
oSheet.AutoSizeColumn(7);
oSheet.AutoSizeColumn(8);
oSheet.AutoSizeColumn(9);
oSheet.AutoSizeColumn(10);
workbook.Write(sw);
sw.Close();
}
catch (Exception e)
{
throw e;
}
}
Run Code Online (Sandbox Code Playgroud) 我已经尝试了十几种方法来做到这一点,没有任何作用.我尝试将垂直对齐应用到中心.
似乎没有什么工作.
我真的很感激一些帮助.
这是我的代码:
var workbook = new HSSFWorkbook();
var sheet = workbook.CreateSheet("Zmiana " + i.ToString());
var headerRow = sheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("Data");
headerRow.CreateCell(1).SetCellValue("Maszyna");
headerRow.CreateCell(2).SetCellValue("Zmiana");
headerRow.CreateCell(3).SetCellValue("Brygadzista");
int rowNumber = 1;
List<MachineStatusReport> listForOneShift = list.Where(c => c.Zmiana == i).ToList();
foreach (MachineStatusReport elements in listForOneShift)
{
var row = sheet.CreateRow(rowNumber++);
row.CreateCell(0).SetCellValue(date.ToShortDateString());
row.CreateCell(1).SetCellValue(elements.Stanowisko);
row.CreateCell(2).SetCellValue("Zmiana " + i.ToString());
row.CreateCell(3).SetCellValue(elements.Brygadzista);
row.CreateCell(4).SetCellValue(elements.KodProduktu);
}
NPOI.SS.Util.CellRangeAddress cra = new NPOI.SS.Util.CellRangeAddress(1, counter, 1, 5);
sheet.AddMergedRegion(cra);
}
MemoryStream output = new MemoryStream();
workbook.Write(output);
Run Code Online (Sandbox Code Playgroud)
干杯!
我一直在使用该Microsoft.Office.Interop.Excel库打开Excel,刷新一些查询并保存.我遇到的问题是,只有当每台计算机都具有与PC上安装的项目中选择的Excel库相同的Excel库时,这才会起作用.
我看到NPOI可以http://npoi.codeplex.com/documentation读取和写入数据到Excel,但是开放/刷新/保存更简单的任务怎么样,NPOI可以处理这个吗?
如果您使用此语法,我似乎可以打开我的Excel文件,但刷新查询和保存呢?
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
private void button1_Click(object sender, EventArgs e)
{
HSSFWorkbook hssfwb;
using (FileStream file = new FileStream(@"c:\test.xls", FileMode.Open, FileAccess.Read))
{
hssfwb= new HSSFWorkbook(file);
}
Run Code Online (Sandbox Code Playgroud) 我想用控制台应用程序C#打开一个现有的excel文件并向其中添加内容.NPOI 2.1.1.0
我的第一种方法是简单地为最后一个单元格添加一个值我解决了它将解决我的另一个问题.
这将使用新内容正确读取文件,但不会保存它.
输出:
"无法访问已关闭的文件."
HSSFWorkbook hssfwb;
using (FileStream file = new FileStream(@"c:\testfile.xls", FileMode.Open, FileAccess.ReadWrite))
{
hssfwb = new HSSFWorkbook(file);
ISheet sheet = hssfwb.GetSheetAt(0);
IRow row = sheet.GetRow(0);
sheet.CreateRow(row.LastCellNum);
ICell cell = row.CreateCell(row.LastCellNum);
cell.SetCellValue("test");
for (int i = 0; i < row.LastCellNum; i++)
{
Console.WriteLine(row.GetCell(i));
}
hssfwb.Write(file);
file.Close();
}
Run Code Online (Sandbox Code Playgroud)
我确实尝试添加以下内容但它导致了一个无法打开的空白文件.
MemoryStream mstream = new MemoryStream();
hssfwb.Write(mstream);
byte[] bytes = new byte[mstream.Length];
mstream.Read(bytes, 0, (int)mstream.Length);
file.Write(bytes, 0, bytes.Length);
file.Close();
mstream.Close();
Run Code Online (Sandbox Code Playgroud)
我还尝试将hssfwb单独放在使用范围内,将filemode更改为Append/openorcreate/truncate,如果写入检查则添加没有任何结果.
但是,一种解决方案是读取文件,将其转换为数据表,创建新的excel文件并使用数据填充它.
我究竟做错了什么?任何人都可以对此有所了解吗?我徒劳地看着Npoi示例包.
我需要设置和删除行的背景颜色.为什么当我将样式设置为行时它不起作用 - 仍然没有行的背景颜色.我试图设置单个单元格的CellStyle属性并使用HSSFStyle.结果是一样的 - 没有背景颜色.这是代码:
XSSFCellStyle style = (XSSFCellStyle)_myBook.CreateCellStyle();
// Define cell style according to input color parameter
XSSFColor colorToFill;
switch (color)
{
default:
colorToFill = new XSSFColor(Color.Gray);
break;
}
style.SetFillBackgroundColor(colorToFill);
for (int i = From; i <= To; i++)
{
var row = GetCreateRow(i);
row.RowStyle = style;
}
Run Code Online (Sandbox Code Playgroud)
PS Document以XSSF格式打开
NPOI DLL会识别.xlsx文件吗?
目前我正在使用NPOI 1.2.5版本的DLL for Microsoft Excel 97-2003,但我也需要访问Excel扩展表.xlsx.
NPOI会支持上述吗?
代码段:
static void Main(string[] args) {
XSSFWorkbook xssfwb;
using(FileStream file=new FileStream(
@"C:\Users\347702\Desktop\Hello.xlsx",
FileMode.Open, FileAccess.Read)) {
xssfwb=new XSSFWorkbook(file);
}
ISheet sheet=xssfwb.GetSheet("sheet1");
sheet.GetRow(1048576);
Console.WriteLine(sheet.GetRow(1048576).GetCell(0).StringCellValue);
}
Run Code Online (Sandbox Code Playgroud) 我有一个SSIS包,它使用脚本任务用来自各种不同文件类型(包括excel)的数据填充数据表.
我正在使用NPOI读取Excel中的数据,并将NPOI.dll文件放在与SSIS包相同的文件夹中,并将其作为脚本任务中的引用添加.对于NPOI,我是一个Noob,所以我现在只是在修修补补,但即便如此,我仍然在第一关!
我的脚本包含下面的代码(我从这个SA答案中复制了代码):
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
HSSFWorkbook wb;
using (FileStream file = new FileStream(FilePath, FileMode.Open, FileAccess.Read))
{
wb = new HSSFWorkbook(file);
}
Run Code Online (Sandbox Code Playgroud)
但失败并显示以下错误消息: Could not load file or assembly 'NPOI, Version=2.1.1.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1' or one of its dependencies. The system cannot find the file specified
但是当我进入脚本任务时,引用就在那里并且没有错误.
如果我注释掉除了第一行之外的所有内容,我声明一个HSSFWorkBook被调用wb它运行正常.
我是否错误地添加了引用,或者添加对SSIS脚本任务的引用是多么困难?
一如往常,任何帮助都非常感谢.